monadology-0.4: The best ideas in monad-related classes and types.
Safe HaskellNone
LanguageGHC2021

Control.Monad.Ology.Specific.ReaderT

Synopsis

Documentation

ask :: forall (m :: Type -> Type) r. Monad m => ReaderT r m r #

Fetch the value of the environment.

asks #

Arguments

:: forall (m :: Type -> Type) r a. Monad m 
=> (r -> a)

The selector function to apply to the environment.

-> ReaderT r m a 

Retrieve a function of the current environment.

local #

Arguments

:: forall r (m :: Type -> Type) a. (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).

newtype ReaderT r (m :: Type -> Type) 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

Instances details
TransConstraint MonadFail (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFail m => Dict (MonadFail (ReaderT s m)) Source #

TransConstraint MonadFix (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFix m => Dict (MonadFix (ReaderT s m)) Source #

TransConstraint MonadIO (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadIO m => Dict (MonadIO (ReaderT s m)) Source #

TransConstraint Applicative (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Applicative m => Dict (Applicative (ReaderT s m)) Source #

TransConstraint Functor (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Functor m => Dict (Functor (ReaderT s m)) Source #

TransConstraint Monad (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Monad m => Dict (Monad (ReaderT s m)) Source #

TransConstraint MonadPlus (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadPlus m => Dict (MonadPlus (ReaderT s m)) Source #

TransConstraint MonadException (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadException m => Dict (MonadException (ReaderT r m)) Source #

TransConstraint MonadOuter (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadOuter m => Dict (MonadOuter (ReaderT s m)) Source #

Generic1 (ReaderT r m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Reader

Associated Types

type Rep1 (ReaderT r m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep1 (ReaderT r m :: Type -> Type) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.1.0-inplace" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ((FUN 'Many r :: Type -> Type) :.: Rec1 m)))

Methods

from1 :: ReaderT r m a -> Rep1 (ReaderT r m) a #

to1 :: Rep1 (ReaderT r m) a -> ReaderT r m a #

MonadCatch e m => MonadCatch e (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

catch :: ReaderT r m a -> (e -> ReaderT r m a) -> ReaderT r m a Source #

MonadThrow e m => MonadThrow e (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

throw :: e -> ReaderT r m a Source #

MonadTransAskUnlift (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

askUnlift :: forall (m :: Type -> Type). Monad m => ReaderT r m (WUnlift Monad (ReaderT r)) Source #

MonadTransCoerce (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

transCoerce :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). Coercible m1 m2 => Dict (Coercible (ReaderT r m1) (ReaderT r m2)) Source #

MonadTransHoist (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hoist :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). (Monad m1, Monad m2) => (m1 --> m2) -> ReaderT r m1 --> ReaderT r m2 Source #

MonadTransTunnel (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Associated Types

type Tunnel (ReaderT r) 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

tunnel :: Monad m => ((forall (m1 :: Type -> Type) a. Monad m1 => ReaderT r m1 a -> m1 (Tunnel (ReaderT r) a)) -> m (Tunnel (ReaderT r) r0)) -> ReaderT r m r0 Source #

MonadTransUnlift (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (ReaderT r) -> m r0) -> ReaderT r m r0 Source #

getDiscardingUnlift :: forall (m :: Type -> Type). Monad m => ReaderT r m (WUnlift MonadTunnelIO (ReaderT r)) Source #

MonadTrans (ReaderT r) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

lift :: Monad m => m a -> ReaderT r m a #

TransConstraint (MonadCatch e) (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadCatch e m => Dict (MonadCatch e (ReaderT r m)) Source #

TransConstraint (MonadThrow e) (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadThrow e m => Dict (MonadThrow e (ReaderT r m)) Source #

MonadFail m => MonadFail (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

fail :: String -> ReaderT r m a #

MonadFix m => MonadFix (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

mfix :: (a -> ReaderT r m a) -> ReaderT r m a #

MonadIO m => MonadIO (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

liftIO :: IO a -> ReaderT r m a #

MonadZip m => MonadZip (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

mzip :: ReaderT r m a -> ReaderT r m b -> ReaderT r m (a, b) #

mzipWith :: (a -> b -> c) -> ReaderT r m a -> ReaderT r m b -> ReaderT r m c #

munzip :: ReaderT r m (a, b) -> (ReaderT r m a, ReaderT r m b) #

Contravariant m => Contravariant (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

contramap :: (a' -> a) -> ReaderT r m a -> ReaderT r m a' #

(>$) :: b -> ReaderT r m b -> ReaderT r m a #

Alternative m => Alternative (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

empty :: ReaderT r m a #

(<|>) :: ReaderT r m a -> ReaderT r m a -> ReaderT r m a #

some :: ReaderT r m a -> ReaderT r m [a] #

many :: ReaderT r m a -> ReaderT r m [a] #

Applicative m => Applicative (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

pure :: a -> ReaderT r m a #

(<*>) :: ReaderT r m (a -> b) -> ReaderT r m a -> ReaderT r m b #

liftA2 :: (a -> b -> c) -> ReaderT r m a -> ReaderT r m b -> ReaderT r m c #

(*>) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m b #

(<*) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m a #

Functor m => Functor (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

fmap :: (a -> b) -> ReaderT r m a -> ReaderT r m b #

(<$) :: a -> ReaderT r m b -> ReaderT r m a #

Monad m => Monad (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

(>>=) :: ReaderT r m a -> (a -> ReaderT r m b) -> ReaderT r m b #

(>>) :: ReaderT r m a -> ReaderT r m b -> ReaderT r m b #

return :: a -> ReaderT r m a #

MonadPlus m => MonadPlus (ReaderT r m) 
Instance details

Defined in Control.Monad.Trans.Reader

Methods

mzero :: ReaderT r m a #

mplus :: ReaderT r m a -> ReaderT r m a -> ReaderT r m a #

Invariant m => Invariant (ReaderT r m)

from the transformers package

Instance details

Defined in Data.Functor.Invariant

Methods

invmap :: (a -> b) -> (b -> a) -> ReaderT r m a -> ReaderT r m b #

MonadException m => MonadException (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Associated Types

type Exc (ReaderT r m) 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

type Exc (ReaderT r m) = Exc m

Methods

throwExc :: Exc (ReaderT r m) -> ReaderT r m a Source #

catchExc :: ReaderT r m a -> (Exc (ReaderT r m) -> ReaderT r m a) -> ReaderT r m a Source #

MonadOuter m => MonadOuter (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

getExtract :: ReaderT r m (WExtract (ReaderT r m)) Source #

Lifting MonadFix (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). MonadFix a :- MonadFix (ReaderT e a) #

Lifting MonadIO (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). MonadIO a :- MonadIO (ReaderT e a) #

Lifting Alternative (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). Alternative a :- Alternative (ReaderT e a) #

Lifting Applicative (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). Applicative a :- Applicative (ReaderT e a) #

Lifting Functor (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). Functor a :- Functor (ReaderT e a) #

Lifting Monad (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). Monad a :- Monad (ReaderT e a) #

Lifting MonadPlus (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). MonadPlus a :- MonadPlus (ReaderT e a) #

Lifting MonadCont (ReaderT e :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). MonadCont a :- MonadCont (ReaderT e a) #

Lifting (MonadError e :: (Type -> Type) -> Constraint) (ReaderT r :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). MonadError e a :- MonadError e (ReaderT r a) #

Lifting (MonadState s :: (Type -> Type) -> Constraint) (ReaderT r :: (Type -> Type) -> Type -> Type) 
Instance details

Defined in Data.Constraint.Lifting

Methods

lifting :: forall (a :: Type -> Type). MonadState s a :- MonadState s (ReaderT r a) #

Generic (ReaderT r m a) 
Instance details

Defined in Control.Monad.Trans.Reader

Associated Types

type Rep (ReaderT r m a) 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep (ReaderT r m a) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.1.0-inplace" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (r -> m a))))

Methods

from :: ReaderT r m a -> Rep (ReaderT r m a) x #

to :: Rep (ReaderT r m a) x -> ReaderT r m a #

type Rep1 (ReaderT r m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep1 (ReaderT r m :: Type -> Type) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.1.0-inplace" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) ((FUN 'Many r :: Type -> Type) :.: Rec1 m)))
type Tunnel (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

type Exc (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

type Exc (ReaderT r m) = Exc m
type Rep (ReaderT r m a) 
Instance details

Defined in Control.Monad.Trans.Reader

type Rep (ReaderT r m a) = D1 ('MetaData "ReaderT" "Control.Monad.Trans.Reader" "transformers-0.6.1.0-inplace" 'True) (C1 ('MetaCons "ReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (r -> m a))))

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.

runReader #

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 #

Transform the value returned by a Reader.

withReader #

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

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

Transform the computation inside a ReaderT.

withReaderT #

Arguments

:: forall r' r (m :: Type -> Type) a. (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 :: forall (m :: Type -> Type) r a. Monad m => (r -> a) -> ReaderT r m a #

Constructor for computations in the reader monad (equivalent to asks).

with :: forall r (m :: Type -> Type) a. r -> ReaderT r m a -> ReaderT r m a Source #

tToReaderTUnlift :: forall (m :: Type -> Type) (t :: (Type -> Type) -> Type -> Type). MonadTunnelIO m => t m --> ReaderT (WUnlift Monad t) m Source #

Orphan instances

TransConstraint MonadFail (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFail m => Dict (MonadFail (ReaderT s m)) Source #

TransConstraint MonadFix (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFix m => Dict (MonadFix (ReaderT s m)) Source #

TransConstraint MonadIO (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadIO m => Dict (MonadIO (ReaderT s m)) Source #

TransConstraint Applicative (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). Applicative m => Dict (Applicative (ReaderT s m)) Source #

TransConstraint Functor (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). Functor m => Dict (Functor (ReaderT s m)) Source #

TransConstraint Monad (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). Monad m => Dict (Monad (ReaderT s m)) Source #

TransConstraint MonadPlus (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadPlus m => Dict (MonadPlus (ReaderT s m)) Source #

TransConstraint MonadException (ReaderT r) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadException m => Dict (MonadException (ReaderT r m)) Source #

TransConstraint MonadOuter (ReaderT s) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadOuter m => Dict (MonadOuter (ReaderT s m)) Source #

MonadCatch e m => MonadCatch e (ReaderT r m) Source # 
Instance details

Methods

catch :: ReaderT r m a -> (e -> ReaderT r m a) -> ReaderT r m a Source #

MonadThrow e m => MonadThrow e (ReaderT r m) Source # 
Instance details

Methods

throw :: e -> ReaderT r m a Source #

MonadTransAskUnlift (ReaderT r) Source # 
Instance details

Methods

askUnlift :: forall (m :: Type -> Type). Monad m => ReaderT r m (WUnlift Monad (ReaderT r)) Source #

MonadTransCoerce (ReaderT r) Source # 
Instance details

Methods

transCoerce :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). Coercible m1 m2 => Dict (Coercible (ReaderT r m1) (ReaderT r m2)) Source #

MonadTransHoist (ReaderT r) Source # 
Instance details

Methods

hoist :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). (Monad m1, Monad m2) => (m1 --> m2) -> ReaderT r m1 --> ReaderT r m2 Source #

MonadTransTunnel (ReaderT r) Source # 
Instance details

Associated Types

type Tunnel (ReaderT r) 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

tunnel :: Monad m => ((forall (m1 :: Type -> Type) a. Monad m1 => ReaderT r m1 a -> m1 (Tunnel (ReaderT r) a)) -> m (Tunnel (ReaderT r) r0)) -> ReaderT r m r0 Source #

MonadTransUnlift (ReaderT r) Source # 
Instance details

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (ReaderT r) -> m r0) -> ReaderT r m r0 Source #

getDiscardingUnlift :: forall (m :: Type -> Type). Monad m => ReaderT r m (WUnlift MonadTunnelIO (ReaderT r)) Source #

TransConstraint (MonadCatch e) (ReaderT r) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadCatch e m => Dict (MonadCatch e (ReaderT r m)) Source #

TransConstraint (MonadThrow e) (ReaderT r) Source # 
Instance details

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadThrow e m => Dict (MonadThrow e (ReaderT r m)) Source #

MonadException m => MonadException (ReaderT r m) Source # 
Instance details

Associated Types

type Exc (ReaderT r m) 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

type Exc (ReaderT r m) = Exc m

Methods

throwExc :: Exc (ReaderT r m) -> ReaderT r m a Source #

catchExc :: ReaderT r m a -> (Exc (ReaderT r m) -> ReaderT r m a) -> ReaderT r m a Source #

MonadOuter m => MonadOuter (ReaderT r m) Source # 
Instance details

Methods

getExtract :: ReaderT r m (WExtract (ReaderT r m)) Source #