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.4.0.tar.gz (8.1 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.4.0-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pramda-1.4.0.tar.gz
Algorithm Hash digest
SHA256 aa6b329644697540e2a33d9c3712c932024a84fbfc305c6cf1be0d62e0f0cd13
MD5 56f0741dad807daf67ccb4a66ee9192b
BLAKE2b-256 cf898f9688babf4bf187fcbe699adee8a2b6ccdc88e754a7de6b8737e4efa920

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pramda-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5141d2a7f3ca7fbdf67a270bfd0a9585a3409bccf0b8df235fa63165178903be
MD5 61b1212039cacbbf1320277b94eb8f0b
BLAKE2b-256 b4ff65c2c52d135a51f0cf1fd9f0a86f9f6d9889e15ba271bf4af3c79b60f7d9

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