functionalpy
Project description
FunctionalPy
Python has implemented map
, filter
etc. as functions, rather than methods on a sequence. This makes the result harder to read and Iterators less used than they could be. FunctionalPy exists to change that.
You get 🔥🔥🔥this🔥🔥🔥:
Seq([1,2,3])
.map(lambda x: multiply_by_2(x))
.filter(lambda x: is_even(x))
Instead of this:
sequence = [1,2,3]
multiplied = [multiply_by_2(x) for x in sequence]
is_even = [x for x in multiplied if is_even(x)]
Or this:
filter(lambda x: is_even(x), map(lambda x: multiply_by_2(x), [1,2,3]))
Install
pip install functionalpy
Usage
from functionalpy import Seq
result = (Seq([1, 2])
.filter(lambda x: x % 2 == 0)
.map(lambda x: x * 2)
.to_list()
)
assert result == [4]
Philosophy
- Make it work: Concise syntax borrowed from Scala, Rust etc.
- Make it right: Fully typed, no exceptions.
- Make it fast: Concurrency through
.pmap
, potentially caching in the future
Prior art
FunctionalPy stands on the shoulders of Scala, Rust etc. Moreover, PyFunctional has existed for 7+ years, bringing most of the functionality to the Python. It definitely helps make it fast, with built-in lineage and caching. Unfortunately, this makes typing non-trivial, and has been going on for 4 years.
Contributing
Devcontainer
- Install Orbstack or Docker Desktop. Make sure to complete the full install process before continuing.
- If not installed, install VSCode
- Press this link
- Complete the setup process
- Done! Easy as that.
💬 Where to ask questions
Type | |
---|---|
🚨 Bug Reports | GitHub Issue Tracker |
🎁 Feature Requests & Ideas | GitHub Issue Tracker |
👩💻 Usage Questions | GitHub Discussions |
🗯 General Discussion | GitHub Discussions |
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
functionalpy-0.13.0.tar.gz
(24.5 kB
view hashes)
Built Distribution
Close
Hashes for functionalpy-0.13.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08e477d5f9c9f61274eb699240b4c19b78f3ae3b99975a52369b69795b388fcc |
|
MD5 | cf7854fe1d405fa5ae363d77103e67b5 |
|
BLAKE2b-256 | 1590cd424570b78f187a9135fc2c1e23eb0a45b7722288aaa341969b9fe64bac |