Copyright |
(c) Andy Gill 2001
(c) Oregon Graduate Institute of Science and Technology 2001 |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | R.Paterson@city.ac.uk |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
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.
Synopsis
- 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 :: (r -> r) -> ReaderT r m a -> ReaderT r m a
- asks :: Monad m => (r -> a) -> ReaderT r m a
- liftCallCC :: CallCC m a b -> CallCC ( ReaderT r m) a b
- liftCatch :: Catch e m a -> Catch e ( ReaderT r m) a
The Reader monad
type Reader r = ReaderT r Identity Source #
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 Source #
Constructor for computations in the reader monad (equivalent to
asks
).
:: Reader r a |
A
|
-> r |
An initial environment. |
-> a |
Runs a
Reader
and extracts the final value from it.
(The inverse of
reader
.)
:: (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 Source #
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.
ReaderT | |
|
Instances
MonadTrans ( ReaderT r) Source # | |
Monad m => Monad ( ReaderT r m) Source # | |
Functor m => Functor ( ReaderT r m) Source # | |
MonadFix m => MonadFix ( ReaderT r m) Source # | |
MonadFail m => MonadFail ( ReaderT r m) Source # | |
Applicative m => Applicative ( ReaderT r m) Source # | |
Defined in Control.Monad.Trans.Reader pure :: a -> ReaderT r m a Source # (<*>) :: ReaderT r m (a -> b) -> ReaderT r m a -> ReaderT r m b Source # liftA2 :: (a -> b -> c) -> ReaderT r m a -> ReaderT r m b -> ReaderT r m c Source # (*>) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m b Source # (<*) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m a Source # |
|
Contravariant m => Contravariant ( ReaderT r m) Source # | |
MonadZip m => MonadZip ( ReaderT r m) Source # | |
MonadIO m => MonadIO ( ReaderT r m) Source # | |
Alternative m => Alternative ( ReaderT r m) Source # | |
MonadPlus m => MonadPlus ( ReaderT r m) Source # | |
mapReaderT :: (m a -> n b) -> ReaderT r m a -> ReaderT r n b Source #
Transform the computation inside a
ReaderT
.
-
runReaderT
(mapReaderT
f m) = f .runReaderT
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 more general version of
local
).
-
runReaderT
(withReaderT
f m) =runReaderT
m . f
Reader operations
:: (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