multistate-0.1.1: like mtl's ReaderT/StateT, but more than one contained value/type.

Safe HaskellNone
LanguageHaskell98

Control.Monad.MultiReader

Documentation

newtype MultiReaderT x m a Source

Constructors

MultiReaderT 

Fields

runMultiReaderTRaw :: StateT (HList x) m a
 

Instances

class Monad m => MonadMultiReader a m where Source

Methods

mAsk :: m a Source

Instances

(MonadTrans t, Monad (t m), MonadMultiReader a m) => MonadMultiReader a (t m) 
(Monad m, ContainsType a c) => MonadMultiReader a (MultiReaderT c m) 

mAskRaw :: Monad m => MultiReaderT a m (HList a) Source

withMultiReader :: Monad m => x -> MultiReaderT (Cons x xs) m a -> MultiReaderT xs m a Source

withMultiReaders :: Monad m => HList xs -> MultiReaderT (Append xs ys) m a -> MultiReaderT ys m a Source

evalMultiReaderTWithInitial :: Monad m => HList a -> MultiReaderT a m b -> m b Source

mapMultiReaderT :: (m (a, HList w) -> m' (a', HList w)) -> MultiReaderT w m a -> MultiReaderT w m' a' Source

data Cons car cdr :: * -> * -> *

Instances

(Show car, Show cdr) => Show (Cons car cdr) 
Typeable (* -> * -> *) Cons 
type IsNull (Cons car cdr) = False 
type Head (Cons car cdr) = car 
type Tail (Cons car cdr) = cdr 
type Reverse' (Cons car cdr) a = Reverse' cdr (Cons car a) 
type Append (Cons car1 cdr2) l2 = Cons car1 (Append cdr2 l2) 

data Null :: *

Instances

Show Null 
Typeable * Null 
type IsNull Null = True 
type Reverse' Null a = a 
type Append Null l2 = l2