SPELL=haskell-free
VERSION=5.1
SOURCE="free-${VERSION}.tar.gz"
SOURCE_URL[0]=https://hackage.haskell.org/package/free-${VERSION}/${SOURCE}
SOURCE_HASH=sha512:be435aa2adb76b9ce4802daa036bfc428366d17bb2bb6ab3239be9c826cea433ad28e81986b9787bf181ee98090e48cd4b580a9c5652d8f28530c14f65ed7788
SOURCE_DIRECTORY="${BUILD_DIRECTORY}/free-${VERSION}"
WEB_SITE="http://github.com/ekmett/free/"
LICENSE[0]=BSD
ENTERED=20150803
SHORT="monads for free"
cat << EOF
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.
EOF