[ bsd3, control, library, monads ] [ Propose Tags ]

Free monads are useful for many tree-like structures and domain specific languages.

If f is a Functor then the free Monad on f is the type of trees whose nodes are labeled with the constructors of f. The word "free" is used in the sense of "unrestricted" rather than "zero-cost": Free f makes no constraining assumptions beyond those given by f and the definition of Monad. As used here it is a standard term from the mathematical theory of adjoint functors.

Cofree comonads are dual to free monads. They provide convenient ways to talk about branching streams and rose-trees, and can be used to annotate syntax trees. The cofree comonad can be seen as a stream parameterized by a Functor that controls its branching factor.

Versions [faq] 0.1.0, 0.1.1, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 1.8.0, 1.8.0.1, 1.8.0.3, 1.8.0.4, 2.0, 2.0.1, 2.0.1.1, 2.0.2, 2.0.3, 2.1, 2.1.1, 2.1.1.1, 2.2, 3.0, 3.1, 3.1.1, 3.2, 3.3, 3.3.0.1, 3.3.0.2, 3.3.1, 3.4, 3.4.1, 3.4.2, 4.0, 4.1, 4.2, 4.4, 4.5, 4.6, 4.6.1, 4.7, 4.7.1, 4.8, 4.8.0.1, 4.9, 4.10.0.1, 4.11, 4.12, 4.12.1, 4.12.2, 4.12.3, 4.12.4, 5, 5.0.1, 5.0.2, 5.1, 5.1.1, 5.1.2, 5.1.3, 5.1.4, 5.1.5, 5.1.6 (info) CHANGELOG.markdown base (==4.*), bifunctors (>=4 && <6), comonad (>=4 && <6), containers (<0.7), distributive (>=0.2.1), exceptions (>=0.6 && <0.11), fail (==4.9.*), indexed-traversable (>=0.1.1 && <0.2), mtl (>=2.0.1.0 && <2.3), profunctors (>=4 && <6), semigroupoids (>=4 && <6), semigroups (>=0.8.3.1 && <1), template-haskell (>=2.7.0.0 && <2.18), th-abstraction (==0.4.*), transformers (>=0.2.0 && <0.6), transformers-base (==0.4.*), transformers-compat (>=0.5.1.0 && <0.7) [details] BSD-3-Clause Copyright (C) 2008-2015 Edward A. Kmett Edward A. Kmett Edward A. Kmett Revision 1 made by ryanglscott at 2020-12-27T14:04:04Z Control, Monads http://github.com/ekmett/free/ http://github.com/ekmett/free/issues head: git clone git://github.com/ekmett/free.git by ryanglscott at 2020-12-16T12:14:48Z Arch:5.1.6, Debian:5.0.2, Fedora:5.1.3, FreeBSD:4.12.1, LTSHaskell:5.1.1, NixOS:5.1.6, Stackage:5.1.1, openSUSE:5.1.3 218725 total (1715 in the last 30 days) 2.5 (votes: 5) [estimated by Bayesian average] λ λ λ Docs available Last success reported on 2020-12-16

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

#### Maintainer's Corner

For package maintainers and hackage trustees

[back to package description]

# free

This package provides a common definitions for working with free monads, free applicatives, and cofree comonads in Haskell.

## Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.

-Edward Kmett