Monad package:relude
Reexporting useful monadic stuff.
The
Monad class defines the basic operations over a
monad, a concept from a branch of mathematics known as
category theory. From the perspective of a Haskell programmer,
however, it is best to think of a monad as an
abstract datatype
of actions. Haskell's
do expressions provide a convenient
syntax for writing monadic expressions.
Instances of
Monad should satisfy the following:
Furthermore, the
Monad and
Applicative operations should
relate as follows:
The above laws imply:
and that
pure and (
<*>) satisfy the applicative
functor laws.
The instances of
Monad for
List,
Maybe and
IO defined in the
Prelude satisfy these laws.
Monads that also support choice and failure.
See examples in
Control.Monad.Reader. Note, the partially
applied function type
(->) r is a simple reader monad. See
the
instance declaration below.
Minimal definition is either both of get and put or
just state