Skip to main content

Functional programming for 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"

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)

Uploaded Python 3

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

Hashes for pramda-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9185d67e68a9003e005b6362a17bf04eb59e93d5966702de287aa8e0d9a669c1
MD5 c636dc051afeae30307efbe791327dd4
BLAKE2b-256 31a686c189a90374a4d5fc23b9c80bc4da7acfb4dcb16e71ff7af87f80b36049

See more details on using hashes here.

Supported by

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