free-4.2: Monads for free
Free monads are useful for many tree-like structures and domain specific languages.
A Monad
n
is a free Monad
for f
if every Monad
homomorphism
from n
to another monad m
is equivalent to a natural transformation
from f
to m
.
Cofree comonads provide convenient ways to talk about branching streams and rose-trees, and can be used to annotate syntax trees.
A Comonad
v
is a cofree Comonad
for f
if every Comonad
homomorphism
another comonad w
to v
is equivalent to a natural transformation
from w
to f
.
Modules
- Control
- Alternative
- Applicative
- Comonad
- Monad
- MonadPlus