hreader-1.1.0: Generalization of MonadReader and ReaderT using hset

Safe HaskellNone
LanguageHaskell2010

Control.Monad.HReader.Class

Synopsis

Documentation

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

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

Minimal complete definition

askHSet, hlocal

Associated Types

type MHRElements m :: [*] Source #

Methods

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

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

Instances

MonadHReader m => MonadHReader (ListT m) Source # 

Associated Types

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

Methods

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

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

MonadHReader m => MonadHReader (MaybeT m) Source # 

Associated Types

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

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

Associated Types

type MHRElements (ExceptT e m :: * -> *) :: [*] Source #

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 (StateT s m) Source # 

Associated Types

type MHRElements (StateT s m :: * -> *) :: [*] Source #

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 # 

Associated Types

type MHRElements (StateT s m :: * -> *) :: [*] Source #

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 # 

Associated Types

type MHRElements (WriterT w m :: * -> *) :: [*] Source #

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 # 

Associated Types

type MHRElements (WriterT w m :: * -> *) :: [*] Source #

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 (IdentityT * m) Source # 

Associated Types

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

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

Associated Types

type MHRElements (HReaderT els m :: * -> *) :: [*] 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 #

MonadHReader m => MonadHReader (ContT * r m) Source # 

Associated Types

type MHRElements (ContT * r m :: * -> *) :: [*] Source #

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 => MonadHReader (ReaderT * r m) Source # 

Associated Types

type MHRElements (ReaderT * r m :: * -> *) :: [*] Source #

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, Monoid w) => MonadHReader (RWST r w s m) Source # 

Associated Types

type MHRElements (RWST r w s m :: * -> *) :: [*] Source #

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 # 

Associated Types

type MHRElements (RWST r w s m :: * -> *) :: [*] Source #

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 :: * -> *) (els :: [*]) :: Constraint 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.

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