Implementation of some concepts from category theory
Project description
Pycategories is a Python 3 library that implements ideas from category theory, such as monoids, functors, and monads. It provides a Haskell-influenced interface for defining instances of those typeclasses and defines several right out of the box, for example the Maybe monad:
>>> from categories import apply >>> from categories.maybe import Just, Nothing >>> f = Just(lambda x: x ** 2) >>> x = Just(17) >>> apply(f, x) Just(289) >>> apply(f, Nothing()) Nothing
Or to define your own instance of a typeclass:
>>> from categories import mappend, mempty, monoid >>> monoid.instance(dict, lambda: {}, lambda a, b: dict(**a, **b)) >>> mappend({'foo': 'bar'}, {'rhu': 'barb'}) {'foo': 'bar', 'rhu': 'barb'}
Installation
pip install pycategories
To clone the repo and install dependencies for development:
git clone https://gitlab.com/danielhones/pycategories cd pycategories pip install -e .[dev]
Support and Contributing
License
Pycategories is licensed under the MIT License
Documentation
Documentation is available at pycategories.readthedocs.io
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
pycategories-1.2.0.tar.gz
(16.1 kB
view hashes)
Built Distribution
Close
Hashes for pycategories-1.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2a472a7127de0a5f0fad7ce6bc95c5320c5394c86bf976d997911347694f803 |
|
MD5 | 5e90e05cef69e98c4ed8f964f75255b3 |
|
BLAKE2b-256 | 8bc7cfc55b1fc7c07b2ace1cee2e4ca4cec0e33205428f01b0a374bc94b6e081 |