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)
add(1)(2)
adjust
adjust(0, add(2), [1])
adjust(2, add(10), [4, 3, 2, 1])
all
is_one = lambda x: x == 1
all(is_one, [1, 1, 1, 1])
all(is_one, [1, 1, 1, 2])
all(is_one)([2, 1, 1, 1])
all(is_one)([2, 2, 2, 2])
all(is_one)([1, 1, 1, 1])
any
any(is_one, [1, 1, 1, 1])
any(is_one, [1, 1, 1, 2])
any(is_one)([2, 1, 1, 1])
any(is_one)([2, 2, 2, 2])
any(is_one)([1.1, 1, 1, 1])
always
pramda = always('pramda')
pramda()
curry
@curry
def example(a, b):
return f'{a} equals {b}'
example('1', 'one')
example('2')('two')
dec
dec(10)
dec(1234)
inc
inc(10)
inc(1234)
gt
gt(1, 2)
gt(2, 2)
gt(2.1, 2)
gt(3, 2)
gte
gte(1, 2)
gte(2, 2)
gte(2.1, 2)
gte(3, 2)
lt
lt(1, 2)
lt(2, 2)
lt(2.1, 2)
lt(3, 2)
lte
lte(1, 2)
lte(2, 2)
lte(2.1, 2)
lte(3, 2)
map
multiplication = lambda x: x * 2
map(multiplication, [4, 2, 3])
map(multiplication)([4, 2, 3])
pipe
inc = lambda x: x + 1
pipe(inc, inc, inc, inc, inc)(1)
reduce
reduce(add, [1, 2, 3])
reduce(concat_string, ["a", "b", "c"])
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)
test(10)
test(50)
test(100)
omit
omit(['a', 'b'], {'a': 1, 'b': 2, 'c': 3})
omit(['a'], {'a': 1, 'b': 2, 'c': 3})
omit([], {'a': 1, 'b': 2, 'c': 3})
pick
pick(['a', 'b'], {'a': 1, 'b': 2, 'c': 3})
pick(['a'], {'a': 1, 'b': 2, 'c': 3})
pick([], {'a': 1, 'b': 2, 'c': 3})