Portability | portable |
---|---|
Stability | experimental |
Maintainer | ross@soi.city.ac.uk |
Safe Haskell | Safe-Inferred |
Control.Monad.Trans.Reader
Description
Declaration of the ReaderT
monad transformer, which adds a static
environment to a given monad.
If the computation is to modify the stored information, use Control.Monad.Trans.State instead.
- type Reader r = ReaderT r Identity
- reader :: Monad m => (r -> a) -> ReaderT r m a
- runReader :: Reader r a -> r -> a
- mapReader :: (a -> b) -> Reader r a -> Reader r b
- withReader :: (r' -> r) -> Reader r a -> Reader r' a
- newtype ReaderT r m a = ReaderT {
- runReaderT :: r -> m a
- mapReaderT :: (m a -> n b) -> ReaderT r m a -> ReaderT r n b
- withReaderT :: (r' -> r) -> ReaderT r m a -> ReaderT r' m a
- ask :: Monad m => ReaderT r m r
- local :: Monad m => (r -> r) -> ReaderT r m a -> ReaderT r m a
- asks :: Monad m => (r -> a) -> ReaderT r m a
- liftCallCC :: (((a -> m b) -> m a) -> m a) -> ((a -> ReaderT r m b) -> ReaderT r m a) -> ReaderT r m a
- liftCatch :: (m a -> (e -> m a) -> m a) -> ReaderT r m a -> (e -> ReaderT r m a) -> ReaderT r m a
The Reader monad
type Reader r = ReaderT r Identity
The parameterizable reader monad.
Computations are functions of a shared environment.
The return
function ignores the environment, while >>=
passes
the inherited environment to both subcomputations.
reader :: Monad m => (r -> a) -> ReaderT r m a
Constructor for computations in the reader monad (equivalent to asks
).
Arguments
:: Reader r a | A |
-> r | An initial environment. |
-> a |
Runs a Reader
and extracts the final value from it.
(The inverse of reader
.)
Arguments
:: (r' -> r) | The function to modify the environment. |
-> Reader r a | Computation to run in the modified environment. |
-> Reader r' a |
Execute a computation in a modified environment
(a specialization of withReaderT
).
runReader
(withReader
f m) =runReader
m . f
The ReaderT monad transformer
newtype ReaderT r m a
The reader monad transformer, which adds a read-only environment to the given monad.
The return
function ignores the environment, while >>=
passes
the inherited environment to both subcomputations.
Constructors
ReaderT | |
Fields
|
Instances
MonadTrans (ReaderT r) | |
Monad m => Monad (ReaderT r m) | |
Functor m => Functor (ReaderT r m) | |
(Monad (ReaderT r m), MonadFix m) => MonadFix (ReaderT r m) | |
(Monad (ReaderT r m), MonadPlus m) => MonadPlus (ReaderT r m) | |
(Functor (ReaderT r m), Applicative m) => Applicative (ReaderT r m) | |
(Applicative (ReaderT r m), Alternative m) => Alternative (ReaderT r m) | |
(Monad (ReaderT r m), MonadIO m) => MonadIO (ReaderT r m) |
mapReaderT :: (m a -> n b) -> ReaderT r m a -> ReaderT r n b
Transform the computation inside a ReaderT
.
runReaderT
(mapReaderT
f m) = f .runReaderT
m
Arguments
:: (r' -> r) | The function to modify the environment. |
-> ReaderT r m a | Computation to run in the modified environment. |
-> ReaderT r' m a |
Execute a computation in a modified environment
(a more general version of local
).
runReaderT
(withReaderT
f m) =runReaderT
m . f
Reader operations
Arguments
:: Monad m | |
=> (r -> r) | The function to modify the environment. |
-> ReaderT r m a | Computation to run in the modified environment. |
-> ReaderT r m a |
Execute a computation in a modified environment
(a specialization of withReaderT
).
runReaderT
(local
f m) =runReaderT
m . f