Skip to main content

Pramda helps you implement functional programming in Python

Project description

Pramda

Downloads Downloads Downloads

Pramda helps you implement functional programming in Python

I didn't have a good functional programming tool like Ramda.js, so I made it.

[ Pypi ]

Install

$ pip install pramda

How to use

add

add(1, 2) # 3
add(1)(2) # 3

adjust

adjust(0, add(2), [1]) # 3
adjust(2, add(10), [4, 3, 2, 1]) # 12

all

is_one = lambda x: x == 1

all(is_one, [1, 1, 1, 1])   # True
all(is_one, [1, 1, 1, 2])   # False
all(is_one)([2, 1, 1, 1])   # False
all(is_one)([2, 2, 2, 2])   # False
all(is_one)([1, 1, 1, 1])   # True

any

any(is_one, [1, 1, 1, 1])   # True
any(is_one, [1, 1, 1, 2])   # True
any(is_one)([2, 1, 1, 1])   # True
any(is_one)([2, 2, 2, 2])   # False
any(is_one)([1.1, 1, 1, 1]) # True

always

pramda = always('pramda')
pramda() # 'pramda'

curry

@curry
def example(a, b):
  return f'{a} equals {b}'

example('1', 'one') # 1 equals one
example('2')('two') # 2 equals two

dec

dec(10) # 9
dec(1234) # 1233

inc

inc(10) # 11
inc(1234) # 1235

gt

gt(1, 2)   # False
gt(2, 2)   # False
gt(2.1, 2) # True
gt(3, 2)   # True

gte

gte(1, 2)   # False
gte(2, 2)   # True
gte(2.1, 2) # True
gte(3, 2)   # True

lt

lt(1, 2)   # True
lt(2, 2)   # False
lt(2.1, 2) # False
lt(3, 2)   # False

lte

lte(1, 2)   # True
lte(2, 2)   # True
lte(2.1, 2) # False
lte(3, 2)   # False

map

multiplication = lambda x: x * 2
map(multiplication, [4, 2, 3]) # [8, 4, 6]
map(multiplication)([4, 2, 3]) # [8, 4, 6]

pipe

inc = lambda x: x + 1

pipe(inc, inc, inc, inc, inc)(1) # 6

reduce

reduce(add, [1, 2, 3])                 # 6
reduce(concat_string, ["a", "b", "c"]) # "abc"

cond

@curry
equal(a, b):
  return a == b

test = cond(
  [equal(1),   lambda _: 'a'],
  [equal(10),  lambda _: 'b'],
  [equal(50),  lambda _: 'c'],
  [equal(100), lambda _: 'd'],
)

test(1)   # "a"
test(10)  # "b"
test(50)  # "c"
test(100) # "d"

omit

omit(['a', 'b'], {'a': 1, 'b': 2, 'c': 3}) # {'c': 3}
omit(['a'], {'a': 1, 'b': 2, 'c': 3})      # {'b': 2, 'c': 3}
omit([], {'a': 1, 'b': 2, 'c': 3})         # {'a': 1, 'b': 2, 'c': 3}

pick

pick(['a', 'b'], {'a': 1, 'b': 2, 'c': 3}) # {'a': 1, 'b': 2}
pick(['a'], {'a': 1, 'b': 2, 'c': 3})      # {'a': 1}
pick([], {'a': 1, 'b': 2, 'c': 3})         # {}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pramda-1.3.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pramda-1.3.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file pramda-1.3.0.tar.gz.

File metadata

  • Download URL: pramda-1.3.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pramda-1.3.0.tar.gz
Algorithm Hash digest
SHA256 a3e468ddf6ab33a9c7ba70b70924b79037e53241f69975f4a46bcb7895f22e8c
MD5 88cf4ff114b049cf21de7018e817021d
BLAKE2b-256 1076a89d25058d325f775c717aea4ebf96bfccd184c213481946304aeccac321

See more details on using hashes here.

File details

Details for the file pramda-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: pramda-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pramda-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85833591b9790b0657566bbb2e738ffa02eb11f77657f35dd2578781763de71b
MD5 59a786dd26a5b20a233c38b135a52af6
BLAKE2b-256 32713f570f1cbbd31a7c22d0fa8a8314fd20427f8ec817c6f1214815ffb85477

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page