hreader-1.1.0: Generalization of MonadReader and ReaderT using hset

Safe HaskellNone
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

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

Methods

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

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

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 # 

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 # 

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 # 

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 # 

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 #

MFunctor (HReaderT els) Source # 

Methods

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

MMonad (HReaderT els) Source # 

Methods

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

MonadTrans (HReaderT els) Source # 

Methods

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

MonadTransControl (HReaderT els) Source # 

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 #

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

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 #

fail :: String -> HReaderT els m a #

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

Methods

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

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

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

Methods

pure :: a -> HReaderT els m a #

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

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

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

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

Methods

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

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

Methods

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

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

Methods

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

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

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 #

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

Methods

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

(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 #

Generic (HReaderT els m a) Source # 

Associated Types

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

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 # 
type StT (HReaderT els) a = StT (ReaderT * (HSet els)) a
type MHRElements (HReaderT els m) Source # 
type MHRElements (HReaderT els m) = els
type StM (HReaderT els m) a Source # 
type StM (HReaderT els m) a = StM (ReaderT * (HSet els) m) a
type Rep (HReaderT els m a) Source # 
type Rep (HReaderT els m a) = D1 (MetaData "HReaderT" "Control.Monad.HReader" "hreader-1.1.0-3FpHBq5M4MrIJljJqvMWGW" True) (C1 (MetaCons "HReaderT" PrefixI True) (S1 (MetaSel (Just Symbol "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