The functional programming library you need
Project description
Haskellian
The python functional programming library you need
pip install haskellian
Goals
- 0 import time
- Monadic, method chaining style
- Great typing and overloads
Classes
Iter[A]
from haskellian import Iter, iter as I
@I.lift
def gen():
for i in range(100000000000):
yield i
gen() \
.map(lambda x: 2*x) \
.filter(lambda x: x % 2 == 0) \
.batch(2) \
.skip(1)
#.sync() # don't recommend it...
# Iter([(4, 6), (8, 10), (12, 14), (16, 18), (20, 22), ...])
Either[L, R]
from haskellian import Either, either as E
def fetch_users() -> Either[str, list[str]]:
...
def fetch_user(id: str) -> Either[str, dict]:
...
def parse_user(user: dict) -> Either[str, User]:
...
@E.do()
def print_one():
users = fetch_users().unsafe()
raw_user = fetch_user(users[0]).unsafe()
user = parse_user(raw_user).unsafe()
print(user)
Explanation:
.unsafe()
raises unwraps the value or raises anIsLeft
exception@E.do()
wraps the function in atry...except IsLeft
block, returning the possibly raisedLeft
Dict[A]
from haskellian import Dict
Dict({ 'a': 1, 'b': 2, 'c': 4 }) \
.filter_v(lambda v: v % 2 == 0) \
.evolve({ 'c': lambda x: -x })
.map_v(lambda v: 2*v)
# Dict({ 'b': 4, 'c': -8 })
AsynIter[A]
from haskellian import AsynIter, asyn_iter as AI
@AI.lift
async def gen():
for i in range(10):
yield i
await gen() \
.map(lambda x: 2*x) \
.filter(lambda x: x % 2 == 0) \
.batch(2) \
.skip(1) \
.sync()
Project details
Release history Release notifications | RSS feed
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.5.8.tar.gz
(20.2 kB
view details)
Built Distribution
File details
Details for the file haskellian-0.5.8.tar.gz
.
File metadata
- Download URL: haskellian-0.5.8.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0291abd34121b8e44100a3a1f3afe7925de1d6dffd529a4096dcce71839caa27 |
|
MD5 | d3e58e0887f5b8225a39810a7a493d0a |
|
BLAKE2b-256 | 4fbfb2523e0847e89e71ee50fb95df5f94b24d29d2459b58300bd597f2a2b467 |
File details
Details for the file haskellian-0.5.8-py3-none-any.whl
.
File metadata
- Download URL: haskellian-0.5.8-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c489ab11676087a7dcdbf55aad8dbd38930bc71ce960fe37c9d4e690b022d0a |
|
MD5 | d7733b24a6b7a96fe82e8cd3bf1da7f5 |
|
BLAKE2b-256 | 5ab2fc43a0290ac2e6a864937d126a5ef6c4a55f521f06a4d40ac70c47aca9fd |