-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | like mtl's ReaderT/StateT, but more than one contained value/type. -- @package multistate @version 0.1.1 module Control.Monad.MultiReader newtype MultiReaderT x m a MultiReaderT :: StateT (HList x) m a -> MultiReaderT x m a runMultiReaderTRaw :: MultiReaderT x m a -> StateT (HList x) m a type MultiReaderTNull = MultiReaderT Null type MultiReader x a = MultiReaderT x Identity a class Monad m => MonadMultiReader a m mAsk :: MonadMultiReader a m => m a mAskRaw :: Monad m => MultiReaderT a m (HList a) withMultiReader :: Monad m => x -> MultiReaderT (Cons x xs) m a -> MultiReaderT xs m a withMultiReaders :: Monad m => HList xs -> MultiReaderT (Append xs ys) m a -> MultiReaderT ys m a evalMultiReaderT :: Monad m => MultiReaderT Null m a -> m a evalMultiReaderTWithInitial :: Monad m => HList a -> MultiReaderT a m b -> m b mapMultiReaderT :: (m (a, HList w) -> m' (a', HList w)) -> MultiReaderT w m a -> MultiReaderT w m' a' data Cons car cdr :: * -> * -> * data Null :: * instance [overlap ok] MonadWriter w m => MonadWriter w (MultiReaderT c m) instance [overlap ok] MonadState s m => MonadState s (MultiReaderT c m) instance [overlap ok] (MonadTrans t, Monad (t m), MonadMultiReader a m) => MonadMultiReader a (t m) instance [overlap ok] (Monad m, ContainsType a c) => MonadMultiReader a (MultiReaderT c m) instance [overlap ok] MonadTrans (MultiReaderT x) instance [overlap ok] Monad m => Monad (MultiReaderT x m) instance [overlap ok] (Applicative m, Monad m) => Applicative (MultiReaderT x m) instance [overlap ok] Functor f => Functor (MultiReaderT x f) instance [overlap ok] ContainsType a xs => ContainsType a (Cons x xs) instance [overlap ok] ContainsType a (Cons a xs) module Control.Monad.MultiState newtype MultiStateT x m a MultiStateT :: StateT (HList x) m a -> MultiStateT x m a runMultiStateTRaw :: MultiStateT x m a -> StateT (HList x) m a type MultiStateTNull = MultiStateT Null type MultiState x a = MultiStateT x Identity a class Monad m => MonadMultiState a m mSet :: MonadMultiState a m => a -> m () mGet :: MonadMultiState a m => m a mGetRaw :: Monad m => MultiStateT a m (HList a) withMultiState :: Monad m => x -> MultiStateT (Cons x xs) m a -> MultiStateT xs m a withMultiStates :: Monad m => HList xs -> MultiStateT (Append xs ys) m a -> MultiStateT ys m a evalMultiStateT :: Monad m => MultiStateT Null m a -> m a evalMultiStateTWithInitial :: Monad m => HList a -> MultiStateT a m b -> m b mapMultiStateT :: (m (a, HList w) -> m' (a', HList w)) -> MultiStateT w m a -> MultiStateT w m' a' data Cons car cdr :: * -> * -> * data Null :: * instance [overlap ok] MonadWriter w m => MonadWriter w (MultiStateT c m) instance [overlap ok] MonadState s m => MonadState s (MultiStateT c m) instance [overlap ok] (MonadTrans t, Monad (t m), MonadMultiState a m) => MonadMultiState a (t m) instance [overlap ok] (Monad m, ContainsType a c) => MonadMultiState a (MultiStateT c m) instance [overlap ok] MonadTrans (MultiStateT x) instance [overlap ok] Monad m => Monad (MultiStateT x m) instance [overlap ok] (Applicative m, Monad m) => Applicative (MultiStateT x m) instance [overlap ok] Functor f => Functor (MultiStateT x f) instance [overlap ok] ContainsType a xs => ContainsType a (Cons x xs) instance [overlap ok] ContainsType a (Cons a xs)