hreader-1.1.1: Generalization of MonadReader and ReaderT using hset
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.HReader

Synopsis

Documentation

newtype HReaderT els m a Source #

Monad transformer which is like ReaderT but for HSet only

Constructors

HReaderT 

Fields

Instances

Instances details
MFunctor (HReaderT els :: (Type -> Type) -> Type -> TYPE LiftedRep) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

hoist :: forall m n (b :: k). Monad m => (forall a. m a -> n a) -> HReaderT els m b -> HReaderT els n b #

MonadBaseControl b m => MonadBaseControl b (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Associated Types

type StM (HReaderT els m) a #

Methods

liftBaseWith :: (RunInBase (HReaderT els m) b -> b a) -> HReaderT els m a #

restoreM :: StM (HReaderT els m) a -> HReaderT els m a #

MonadError e m => MonadError e (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

throwError :: e -> HReaderT els m a #

catchError :: HReaderT els m a -> (e -> HReaderT els m a) -> HReaderT els m a #

MonadReader r m => MonadReader r (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

ask :: HReaderT els m r #

local :: (r -> r) -> HReaderT els m a -> HReaderT els m a #

reader :: (r -> a) -> HReaderT els m a #

MonadState s m => MonadState s (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

get :: HReaderT els m s #

put :: s -> HReaderT els m () #

state :: (s -> (a, s)) -> HReaderT els m a #

MonadWriter w m => MonadWriter w (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

writer :: (a, w) -> HReaderT els m a #

tell :: w -> HReaderT els m () #

listen :: HReaderT els m a -> HReaderT els m (a, w) #

pass :: HReaderT els m (a, w -> w) -> HReaderT els m a #

MonadBase b m => MonadBase b (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

liftBase :: b α -> HReaderT els m α #

MMonad (HReaderT els) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

embed :: forall (n :: Type -> Type) m b. Monad n => (forall a. m a -> HReaderT els n a) -> HReaderT els m b -> HReaderT els n b #

MonadTransControl (HReaderT els) Source # 
Instance details

Defined in Control.Monad.HReader

Associated Types

type StT (HReaderT els) a #

Methods

liftWith :: Monad m => (Run (HReaderT els) -> m a) -> HReaderT els m a #

restoreT :: Monad m => m (StT (HReaderT els) a) -> HReaderT els m a #

MonadTrans (HReaderT els) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

lift :: Monad m => m a -> HReaderT els m a #

MonadIO m => MonadIO (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

liftIO :: IO a -> HReaderT els m a #

Applicative m => Applicative (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

pure :: a -> HReaderT els m a #

(<*>) :: HReaderT els m (a -> b) -> HReaderT els m a -> HReaderT els m b #

liftA2 :: (a -> b -> c) -> HReaderT els m a -> HReaderT els m b -> HReaderT els m c #

(*>) :: HReaderT els m a -> HReaderT els m b -> HReaderT els m b #

(<*) :: HReaderT els m a -> HReaderT els m b -> HReaderT els m a #

Functor m => Functor (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

fmap :: (a -> b) -> HReaderT els m a -> HReaderT els m b #

(<$) :: a -> HReaderT els m b -> HReaderT els m a #

Monad m => Monad (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

(>>=) :: HReaderT els m a -> (a -> HReaderT els m b) -> HReaderT els m b #

(>>) :: HReaderT els m a -> HReaderT els m b -> HReaderT els m b #

return :: a -> HReaderT els m a #

MonadCatch m => MonadCatch (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

catch :: Exception e => HReaderT els m a -> (e -> HReaderT els m a) -> HReaderT els m a #

MonadMask m => MonadMask (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

mask :: ((forall a. HReaderT els m a -> HReaderT els m a) -> HReaderT els m b) -> HReaderT els m b #

uninterruptibleMask :: ((forall a. HReaderT els m a -> HReaderT els m a) -> HReaderT els m b) -> HReaderT els m b #

generalBracket :: HReaderT els m a -> (a -> ExitCase b -> HReaderT els m c) -> (a -> HReaderT els m b) -> HReaderT els m (b, c) #

MonadThrow m => MonadThrow (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

throwM :: Exception e => e -> HReaderT els m a #

(Monad m, Applicative m) => MonadHReader (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Associated Types

type MHRElements (HReaderT els m) :: [Type] Source #

Methods

askHSet :: HReaderT els m (HSet (MHRElements (HReaderT els m))) Source #

hlocal :: (HSet (MHRElements (HReaderT els m)) -> HSet (MHRElements (HReaderT els m))) -> HReaderT els m a -> HReaderT els m a Source #

MonadCont m => MonadCont (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

Methods

callCC :: ((a -> HReaderT els m b) -> HReaderT els m a) -> HReaderT els m a #

Generic (HReaderT els m a) Source # 
Instance details

Defined in Control.Monad.HReader

Associated Types

type Rep (HReaderT els m a) :: Type -> Type #

Methods

from :: HReaderT els m a -> Rep (HReaderT els m a) x #

to :: Rep (HReaderT els m a) x -> HReaderT els m a #

type StT (HReaderT els) a Source # 
Instance details

Defined in Control.Monad.HReader

type StT (HReaderT els) a = StT (ReaderT (HSet els)) a
type MHRElements (HReaderT els m) Source # 
Instance details

Defined in Control.Monad.HReader

type MHRElements (HReaderT els m) = els
type StM (HReaderT els m) a Source # 
Instance details

Defined in Control.Monad.HReader

type StM (HReaderT els m) a = StM (ReaderT (HSet els) m) a
type Rep (HReaderT els m a) Source # 
Instance details

Defined in Control.Monad.HReader

type Rep (HReaderT els m a) = D1 ('MetaData "HReaderT" "Control.Monad.HReader" "hreader-1.1.1-866buGYljmUJyXmbDI6dr9" 'True) (C1 ('MetaCons "HReaderT" 'PrefixI 'True) (S1 ('MetaSel ('Just "unHReaderT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ReaderT (HSet els) m a))))

runHReaderT :: HSet els -> HReaderT els m a -> m a Source #

subHSetHReaderT :: (Monad m, Applicative m, SubHSettable els subels) => HReaderT subels m a -> HReaderT els m a Source #

Run a local reader with a subset of HSet elements.

narrowHReaderT :: (Monad m, Applicative m, SubHSettable els subels) => proxy subels -> HReaderT subels m a -> HReaderT els m a Source #

Convenient variant of subHSetHReaderT with proxy type to make it posible to run nested HReaderT in place without complex type declarations, e.g.

narrowHReaderT (Proxy :: Proxy '[String, Int]) $ do
  doThingsWithString
  doThingsWithInt
  doThingsWithOtherStuff -- < this will not compile