Functional programming for 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"
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
pramda-1.2.1-py3-none-any.whl
(11.8 kB
view details)
File details
Details for the file pramda-1.2.1-py3-none-any.whl
.
File metadata
- Download URL: pramda-1.2.1-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9185d67e68a9003e005b6362a17bf04eb59e93d5966702de287aa8e0d9a669c1 |
|
MD5 | c636dc051afeae30307efbe791327dd4 |
|
BLAKE2b-256 | 31a686c189a90374a4d5fc23b9c80bc4da7acfb4dcb16e71ff7af87f80b36049 |