|
|
|
|
|
| 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 | |
|
|
|
| Computation with no effects (strict).
| Instances | |
|
|
|
| Add nothing. Useful as a placeholder.
| 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) | | (RunExceptionM m i, Monoid j) => RunExceptionM (WriterT j m) i | | (Monad m, Monoid i) => RunWriterM (WriterT i m) i | | (RunReaderM m j, Monoid i) => RunReaderM (WriterT i m) j | | (ExceptionM m j, Monoid i) => ExceptionM (WriterT i m) j | | (StateM m j, Monoid i) => StateM (WriterT i m) j | | (Monad m, Monoid i) => WriterM (WriterT i m) i | | (ReaderM m j, Monoid i) => ReaderM (WriterT i m) j | | (BaseM m n, Monoid i) => BaseM (WriterT i m) n |
|
|
|
|
| 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 exceptions are Id and Lift which are not transformers
but ordinary monas and so, their run operations simply
eliminate the monad.)
|
|
|
| Get the result of a pure computation.
|
|
|
| Get the result of a pure strict computation.
|
|
|
| Remove an identity layer.
|
|
|
| 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,
these functions do not change the type of the computation (i.e, they
do not remove a layer). Instead, they perform the effects in
a ``separate effect thread''.
|
|
|
| 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 handling of exceptions.
| | | Methods | | | Exceptions are explicit in the result.
|
| | Instances | |
|
|
| Deriving functions
|
|
|
| A isomorphism between (usually) monads.
Typically the constructor and selector of a newtype delcaration.
| | Constructors | | Iso | | | close :: forall a. m a -> n a | | | open :: forall a. n a -> m a | |
|
|
|
|
|
| Derive the implementation of fmap from Functor.
|
|
|
| Derive the implementation of return from Monad.
|
|
|
| Derive the implementation of >>= from Monad.
|
|
|
|
|
| Derive the implementation of mfix from MonadFix.
|
|
|
| Derive the implementation of ask from ReaderM.
|
|
|
| Derive the implementation of put from WriterM.
|
|
|
| Derive the implementation of get from StateM.
|
|
|
| Derive the implementation of set from StateM.
|
|
|
| Derive the implementation of raise from ExceptionM.
|
|
| derive_callCC :: ContM m => Iso m n -> ((a -> n b) -> n a) -> n a | Source |
|
| Derive the implementation of callCC from ContM.
|
|
|
| Derive the implementation of local from RunReaderM.
|
|
|
| Derive the implementation of collect from RunWriterM.
|
|
|
| Derive the implementation of try from RunExceptionM.
|
|
|
|
|
|
| Miscellaneous
|
|
|
| The current version of the library.
|
|
| Produced by Haddock version 2.3.0 |