This package introduces variouos encodings of free categories in Haskell.
Free categories are useful to model state machines in a simple yet type safe way and for that purpose Kleisli categroies are a very useful target which allows to include monadic computations.
Free Category alternatives and similar packages
Based on the "free" category.
Alternatively, view Free Category alternatives based on common mentions on social networks and blogs.
free9.6 4.2 Free Category VS freefree monads
free-operationalOperational-style Applicative, Alternative, Monad and MonadPlus, using free monads.
Free Algebras7.3 0.0 Free Category VS Free AlgebrasFree Algebras in Haskell
free-vl7.1 0.0 Free Category VS free-vlvan Laarhoven Free Monad with Extensible Effects
free-categories5.4 0.0 Free Category VS free-categoriesfree categories
free-er1.6 0.0 Free Category VS free-erAn extensible effects library
Access the most powerful time series database as a service
Do you think we are missing an alternative of Free Category or a related project?
This package contains efficient implementations of free categories. There are various representations available:
- real-time queues (C. Okasaki 'Pure Functional Data Structures')
- type aligned lists
- continuation passing style (Church encoding)
Free arrows and free Kleisli categories are also included.
Free categories are useful to model state machines in a simple yet type safe
manner. For that purpose
Kleisli categories are a very useful target which
allows to include monadic computations. This package contains a useful
Kleisli categories captured by
(categories with effects), and a (free) transformer which lifts a category to
a category with effects.
Check performance characteristics of various representations:
based on State Machines All The Way
Down by Edwin Bradly, 2017.
You can run it with
cabal new-run examples:login-state-machine.
- Read more here on a simple example of a finite state machine encoded using a free category using a simple GADT.
- Another example.
- Blog post on Kleisli categories.