|
|
|
|
|
| Description |
| This library provides a collection of monad transformers that
can be combined to produce various monads.
|
|
| Synopsis |
|
|
|
|
| Types
|
|
| The following types define the representations of the
computation types supported by the library.
Each type adds support for a different effect.
|
|
|
| Computations with no effects.
| Instances | |
|
|
|
| Add support for propagating a context.
| Instances | |
|
|
|
| Add support for collecting values.
| Instances | | Monoid i => MonadT (WriterT i) | | (Monad m, Monoid i) => Monad (WriterT i m) | | (Monad m, Monoid i) => Functor (WriterT i m) | | (MonadFix m, Monoid i) => MonadFix (WriterT i m) | | (MonadPlus m, Monoid i) => MonadPlus (WriterT i m) | | (ContM m, Monoid i) => ContM (WriterT i m) | | (BaseM m n, Monoid i) => BaseM (WriterT i m) n | | (RunReaderM m j, Monoid i) => RunReaderM (WriterT i m) j | | (Monad m, Monoid i) => RunWriterM (WriterT i m) i | | (RunStateM m j, Monoid i) => RunStateM (WriterT i m) j | | (RunExceptionM m i, Monoid j) => RunExceptionM (WriterT j m) i | | (ReaderM m j, Monoid i) => ReaderM (WriterT i m) j | | (Monad m, Monoid i) => WriterM (WriterT i m) i | | (StateM m j, Monoid i) => StateM (WriterT i m) j | | (ExceptionM m j, Monoid i) => ExceptionM (WriterT i m) j |
|
|
|
|
| Add support for threading state.
| Instances | |
|
|
|
| Add support for exceptions.
| Instances | |
|
|
|
| Add support for jumps.
| Instances | |
|
|
| Lifting
|
|
| The following operations allow us to promote computations
in the underlying monad to computations that support an extra
effect. Computations defined in this way do not make use of
the new effect but can be combined with other operations that
utilize the effect.
|
|
|
| | Methods | | | Promote a computation from the underlying monad.
|
| | Instances | |
|
|
|
| | Methods | | | Promote a computation from the base monad.
|
| | Instances | |
|
|
| Effect Classes
|
|
| The following classes define overloaded operations
that can be used to define effectful computations.
|
|
|
| Classifies monads that provide access to a context of type i.
| | | Methods | | | Instances | |
|
|
|
| Classifies monads that can collect values of type i.
| | | Methods | | | Add a value to the collection.
|
| | Instances | |
|
|
|
| Classifies monads that propagate a state component of type i.
| | | Methods | | | Get the state.
| | | | Set the state.
|
| | Instances | |
|
|
|
| Classifies monads that support raising exceptions of type i.
| | | Methods | | | Instances | |
|
|
|
| Classifies monads that provide access to a computation's continuation.
| | | Methods | | callCC :: ((a -> m b) -> m a) -> m a | Source |
| | Capture the current continuation.
|
| | Instances | |
|
|
|
| An explicit representation for continuations that store a value.
|
|
|
|
| Capture the current continuation.
This function is like return, except that it also captures
the current continuation. Later we can use jump to go back to
the continuation with a possibly different value.
|
|
|
| Change the value passed to a previously captured continuation.
|
|
| Execution
|
|
| Eliminating Effects
|
|
| The following functions eliminate the outermost effect
of a computation by translating a computation into an
equivalent computation in the underlying monad.
(The exception is Id which is not a monad transformer
but an ordinary monad, and so, its run operation simply
eliminates the monad.)
|
|
|
| Get the result of a pure computation.
|
|
|
| Execute a reader computation in the given context.
|
|
|
| Execute a writer computation.
Returns the result and the collected output.
|
|
|
| Execute a stateful computation in the given initial state.
The second component of the result is the final state.
|
|
|
| Execute a computation with exceptions.
Successful results are tagged with Right,
exceptional results are tagged with Left.
|
|
|
| Execute a computation with the given continuation.
|
|
| Nested Execution
|
|
| The following classes define operations that are overloaded
versions of the run operations. Unlike the run operations,
functions do not change the type of the computation (i.e, they
do not remove a layer). However, they do not perform any
side-effects in the corresponding layer. Instead, they execute
a computation in a ``separate thread'' with respect to the
corresponding effect.
|
|
|
| Classifies monads that support changing the context for a
sub-computation.
| | | Methods | | local :: i -> m a -> m a | Source |
| | Change the context for the duration of a computation.
|
| | Instances | |
|
|
|
| Classifies monads that support collecting the output of
a sub-computation.
| | | Methods | | collect :: m a -> m (a, i) | Source |
| | Collect the output from a computation.
|
| | Instances | |
|
|
|
| Classifies monads that support separate state threads.
| | | Methods | | runS :: i -> m a -> m (a, i) | Source |
| | Modify the state for the duration of a computation.
Returns the final state.
|
| | Instances | |
|
|
|
| Classifies monads that support handling of exceptions.
| | | Methods | | | Exceptions are explicit in the result.
|
| | Instances | |
|
|
| Miscellaneous
|
|
|
| The current version of the library.
|
|
| Produced by Haddock version 2.1.0 |