
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.
this package provides a library for the haskell programming language, compiled for profiling. see http://www.haskell.org/ for more information on haskell.