Skip to main content

The functional programming library you need

Project description

Haskellian

The functional programming library you need

pip install haskellian

Why

  • Lazy imports + stub files -> great linting and 0 import time
  • Monadic, method chaining style
  • Great typing and overloads
from haskellian import either as E, iter as I, promise as P, Pipe, asyn_iter as AI

Pipe[A] (simplest monad ever)

Pipe('world hello') \
.f(str.title) \
.f(lambda s: s.split(' ')) \
.f(sorted) \
.f(', '.join) \
.value
# 'Hello, World'

Iter[A] (generators made ergonomic)

I.Iter(range(100000000000)) \
.map(lambda x: 2*x) \
.filter(lambda x: x % 2 == 0) \
.batch(2) \
.tail()
#.sync() # don't recommend it...

# Iter([(4, 6), (8, 10), (12, 14), (16, 18), (20, 22), ...])

Promise[A] (awaitables made ergonomic)

async def fetch_users() -> list[str]:
  ...
async def fetch_user(id) -> str:
  ...

await P.Promise(fetch_users()) \
.bind(lambda ids: P.all(map(fetch_user, ids))) \
.then(sorted)

AsyncIter[A], Either[L, R] (self-explanatory at this point, right?)

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

haskellian-0.3.3.tar.gz (12.6 kB view hashes)

Uploaded Source

Built Distribution

haskellian-0.3.3-py3-none-any.whl (21.9 kB view hashes)

Uploaded Python 3

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