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 #

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

Minimal complete definition

askHSet, hlocal

Associated Types

type MHRElements m :: [*] #

Methods

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

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

Instances

MonadHReader m => MonadHReader (ListT m) # 

Associated Types

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

Methods

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

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

MonadHReader m => MonadHReader (MaybeT m) # 

Associated Types

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

Methods

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

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

(MonadHReader m, Monoid w) => MonadHReader (WriterT w m) # 

Associated Types

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

Methods

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

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

MonadHReader m => MonadHReader (StateT s m) # 

Associated Types

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

Methods

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

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

MonadHReader m => MonadHReader (ExceptT e m) # 

Associated Types

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

Methods

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

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

MonadHReader m => MonadHReader (IdentityT * m) # 

Associated Types

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

MonadHReader m => MonadHReader (StateT s m) # 

Associated Types

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

Methods

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

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

(MonadHReader m, Monoid w) => MonadHReader (WriterT w m) # 

Associated Types

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

Methods

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

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

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

Associated Types

type MHRElements (HReaderT els m :: * -> *) :: [*] #

Methods

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

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

MonadHReader m => MonadHReader (ReaderT * r m) # 

Associated Types

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

Methods

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

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

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

Associated Types

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

Methods

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

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

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

Associated Types

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

Methods

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

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 #

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

Associated Types

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

Methods

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

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 #

type family MHRElemsConstraint (m :: * -> *) (els :: [*]) :: Constraint where ... #

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 #

Ask arbitrary element of hset inside HReader

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

Ask arbitrary labeled element of hset in HReader