Pramda helps you implement functional programming in Python
Project description
Pramda
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
Release history Release notifications | RSS feed
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pramda-1.3.0-py3-none-any.whl
(13.6 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3e468ddf6ab33a9c7ba70b70924b79037e53241f69975f4a46bcb7895f22e8c
|
|
| MD5 |
88cf4ff114b049cf21de7018e817021d
|
|
| BLAKE2b-256 |
1076a89d25058d325f775c717aea4ebf96bfccd184c213481946304aeccac321
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85833591b9790b0657566bbb2e738ffa02eb11f77657f35dd2578781763de71b
|
|
| MD5 |
59a786dd26a5b20a233c38b135a52af6
|
|
| BLAKE2b-256 |
32713f570f1cbbd31a7c22d0fa8a8314fd20427f8ec817c6f1214815ffb85477
|