transformers-0.5.1.0: Concrete functor and monad transformers

Copyright(c) Andy Gill 2001, (c) Oregon Graduate Institute of Science and Technology, 2001
LicenseBSD-style (see the file LICENSE)
MaintainerR.Paterson@city.ac.uk
Stabilityexperimental
Portabilityportable
Safe HaskellSafe
LanguageHaskell98

Control.Monad.Trans.Reader

Contents

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.

Synopsis

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).

runReader Source

Arguments

:: Reader r a

A Reader to run.

-> r

An initial environment.

-> a 

Runs a Reader and extracts the final value from it. (The inverse of reader.)

mapReader :: (a -> b) -> Reader r a -> Reader r b Source

Transform the value returned by a Reader.

withReader Source

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).

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.

Constructors

ReaderT 

Fields

Instances

MonadTrans (ReaderT (TYPE Lifted) r) 

Methods

lift :: Monad m => m a -> ReaderT (TYPE Lifted) r m a Source

Monad m => Monad (ReaderT (TYPE Lifted) r m) 

Methods

(>>=) :: ReaderT (TYPE Lifted) r m a -> (a -> ReaderT (TYPE Lifted) r m b) -> ReaderT (TYPE Lifted) r m b Source

(>>) :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m b -> ReaderT (TYPE Lifted) r m b Source

return :: a -> ReaderT (TYPE Lifted) r m a Source

fail :: String -> ReaderT (TYPE Lifted) r m a Source

Functor m => Functor (ReaderT (TYPE Lifted) r m) 

Methods

fmap :: (a -> b) -> ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m b Source

(<$) :: a -> ReaderT (TYPE Lifted) r m b -> ReaderT (TYPE Lifted) r m a Source

MonadFix m => MonadFix (ReaderT (TYPE Lifted) r m) 

Methods

mfix :: (a -> ReaderT (TYPE Lifted) r m a) -> ReaderT (TYPE Lifted) r m a Source

MonadFail m => MonadFail (ReaderT (TYPE Lifted) r m) 

Methods

fail :: String -> ReaderT (TYPE Lifted) r m a Source

Applicative m => Applicative (ReaderT (TYPE Lifted) r m) 

Methods

pure :: a -> ReaderT (TYPE Lifted) r m a Source

(<*>) :: ReaderT (TYPE Lifted) r m (a -> b) -> ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m b Source

(*>) :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m b -> ReaderT (TYPE Lifted) r m b Source

(<*) :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m b -> ReaderT (TYPE Lifted) r m a Source

MonadIO m => MonadIO (ReaderT (TYPE Lifted) r m) 

Methods

liftIO :: IO a -> ReaderT (TYPE Lifted) r m a Source

MonadZip m => MonadZip (ReaderT (TYPE Lifted) r m) 

Methods

mzip :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m b -> ReaderT (TYPE Lifted) r m (a, b) Source

mzipWith :: (a -> b -> c) -> ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m b -> ReaderT (TYPE Lifted) r m c Source

munzip :: ReaderT (TYPE Lifted) r m (a, b) -> (ReaderT (TYPE Lifted) r m a, ReaderT (TYPE Lifted) r m b) Source

Alternative m => Alternative (ReaderT (TYPE Lifted) r m) 

Methods

empty :: ReaderT (TYPE Lifted) r m a Source

(<|>) :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m a Source

some :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m [a] Source

many :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m [a] Source

MonadPlus m => MonadPlus (ReaderT (TYPE Lifted) r m) 

Methods

mzero :: ReaderT (TYPE Lifted) r m a Source

mplus :: ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m a -> ReaderT (TYPE Lifted) r m a Source

mapReaderT :: (m a -> n b) -> ReaderT r m a -> ReaderT r n b Source

Transform the computation inside a ReaderT.

withReaderT Source

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).

Reader operations

ask :: Monad m => ReaderT r m r Source

Fetch the value of the environment.

local Source

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 specialization of withReaderT).

asks Source

Arguments

:: Monad m 
=> (r -> a)

The selector function to apply to the environment.

-> ReaderT r m a 

Retrieve a function of the current environment.

Lifting other operations

liftCallCC :: CallCC m a b -> CallCC (ReaderT r m) a b Source

Lift a callCC operation to the new monad.

liftCatch :: Catch e m a -> Catch e (ReaderT r m) a Source

Lift a catchE operation to the new monad.