Pycategories: Functors, Monads, and more¶
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