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

Control.Monad.HReader.Class

Synopsis

Documentation

class (Monad m, Applicative m) => MonadHReader (m :: Type -> Type) where Source #

Monad which is a reader of HSet (or just can construct it).

Associated Types

type MHRElements (m :: Type -> Type) :: [Type] Source #

Methods

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

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

Instances

Instances details
MonadHReader m => MonadHReader (MaybeT m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (MaybeT m) 
Instance details

Defined in Control.Monad.HReader.Class

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

Defined in Control.Monad.HReader

Associated Types

type MHRElements (HReaderT els m) 
Instance details

Defined in Control.Monad.HReader

type MHRElements (HReaderT els m) = els

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 #

MonadHReader m => MonadHReader (ExceptT e m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (ExceptT e m) 
Instance details

Defined in Control.Monad.HReader.Class

Methods

askHSet :: ExceptT e m (HSet (MHRElements (ExceptT e m))) Source #

hlocal :: (HSet (MHRElements (ExceptT e m)) -> HSet (MHRElements (ExceptT e m))) -> ExceptT e m a -> ExceptT e m a Source #

MonadHReader m => MonadHReader (IdentityT m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (IdentityT m) 
Instance details

Defined in Control.Monad.HReader.Class

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

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (ReaderT r m) 
Instance details

Defined in Control.Monad.HReader.Class

Methods

askHSet :: ReaderT r m (HSet (MHRElements (ReaderT r m))) Source #

hlocal :: (HSet (MHRElements (ReaderT r m)) -> HSet (MHRElements (ReaderT r m))) -> ReaderT r m a -> ReaderT r m a Source #

MonadHReader m => MonadHReader (StateT s m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (StateT s m) 
Instance details

Defined in Control.Monad.HReader.Class

Methods

askHSet :: StateT s m (HSet (MHRElements (StateT s m))) Source #

hlocal :: (HSet (MHRElements (StateT s m)) -> HSet (MHRElements (StateT s m))) -> StateT s m a -> StateT s m a Source #

MonadHReader m => MonadHReader (StateT s m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (StateT s m) 
Instance details

Defined in Control.Monad.HReader.Class

Methods

askHSet :: StateT s m (HSet (MHRElements (StateT s m))) Source #

hlocal :: (HSet (MHRElements (StateT s m)) -> HSet (MHRElements (StateT s m))) -> StateT s m a -> StateT s m a Source #

(MonadHReader m, Monoid w) => MonadHReader (WriterT w m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (WriterT w m) 
Instance details

Defined in Control.Monad.HReader.Class

Methods

askHSet :: WriterT w m (HSet (MHRElements (WriterT w m))) Source #

hlocal :: (HSet (MHRElements (WriterT w m)) -> HSet (MHRElements (WriterT w m))) -> WriterT w m a -> WriterT w m a Source #

(MonadHReader m, Monoid w) => MonadHReader (WriterT w m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (WriterT w m) 
Instance details

Defined in Control.Monad.HReader.Class

Methods

askHSet :: WriterT w m (HSet (MHRElements (WriterT w m))) Source #

hlocal :: (HSet (MHRElements (WriterT w m)) -> HSet (MHRElements (WriterT w m))) -> WriterT w m a -> WriterT w m a Source #

MonadHReader m => MonadHReader (ContT r m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (ContT r m) 
Instance details

Defined in Control.Monad.HReader.Class

Methods

askHSet :: ContT r m (HSet (MHRElements (ContT r m))) Source #

hlocal :: (HSet (MHRElements (ContT r m)) -> HSet (MHRElements (ContT r m))) -> ContT r m a -> ContT r m a Source #

(MonadHReader m, Monoid w) => MonadHReader (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (RWST r w s m) 
Instance details

Defined in Control.Monad.HReader.Class

type MHRElements (RWST r w s m) = MHRElements m

Methods

askHSet :: RWST r w s m (HSet (MHRElements (RWST r w s m))) Source #

hlocal :: (HSet (MHRElements (RWST r w s m)) -> HSet (MHRElements (RWST r w s m))) -> RWST r w s m a -> RWST r w s m a Source #

(MonadHReader m, Monoid w) => MonadHReader (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.HReader.Class

Associated Types

type MHRElements (RWST r w s m) 
Instance details

Defined in Control.Monad.HReader.Class

type MHRElements (RWST r w s m) = MHRElements m

Methods

askHSet :: RWST r w s m (HSet (MHRElements (RWST r w s m))) Source #

hlocal :: (HSet (MHRElements (RWST r w s m)) -> HSet (MHRElements (RWST r w s m))) -> RWST r w s m a -> RWST r w s m a Source #

type family MHRElemsConstraint (m :: Type -> Type) (els :: [Type]) where ... Source #

Easy generate constraint like (HGettable (MHRElements m) Int, HGettable (MHRElements m) Bool) from type list [Int, Bool]. Usable to reuse type lists for constraints and concrete HSet.

Equations

MHRElemsConstraint m ('[] :: [Type]) = MonadHReader m 
MHRElemsConstraint m (e ': els) = (HGettable (MHRElements m) e, MHRElemsConstraint m els) 

hask :: (MonadHReader m, HGettable (MHRElements m) e) => m e Source #

Ask arbitrary element of hset inside HReader

haskTagged :: (MonadHReader m, HGettable (MHRElements m) (Tagged tag e)) => proxy tag -> m e Source #

Ask arbitrary labeled element of hset in HReader