| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Monad.Trans.Compose
Synopsis
- newtype ComposeT t1 t2 m a = ComposeT {
- deComposeT :: t1 (t2 m) a
- runComposeT :: (forall a. t1 (t2 m) a -> t2 m (StT t1 a)) -> (forall a. t2 m a -> m (StT t2 a)) -> forall a. ComposeT t1 t2 m a -> m (StT t2 (StT t1 a))
- runComposeT' :: (t1 (t2 m) a -> t2 m a) -> (t2 m a -> m a) -> ComposeT t1 t2 m a -> m a
Documentation
newtype ComposeT t1 t2 m a Source #
A newtype wrapper for two stacked monad transformers.
Access instances of the intermediate monad (, whenever t2 m)t1 implements
MonadTrans/MonadTransControl.
Constructors
| ComposeT | |
Fields
| |
Instances
| (Monad (t1 (t2 m)), MonadTrans (ComposeT t1 t2), MonadBase b m) => MonadBase b (ComposeT t1 t2 m) Source # | Elevated to |
Defined in Control.Monad.Trans.Compose | |
| (Monad (t1 (t2 m)), MonadTransControl (ComposeT t1 t2), MonadBaseControl b m) => MonadBaseControl b (ComposeT t1 t2 m) Source # | Elevated to |
| (Monad (t1 (t2 m)), MonadTransControl t1, MonadWriter w (t2 m)) => MonadWriter w (ComposeT t1 t2 m) Source # | Elevated to |
| (Monad (t1 (t2 m)), MonadTrans t1, MonadState s (t2 m)) => MonadState s (ComposeT t1 t2 m) Source # | Elevated to |
| (Monad (t1 (t2 m)), MonadTransControl t1, MonadReader r (t2 m)) => MonadReader r (ComposeT t1 t2 m) Source # | Elevated to |
| (Monad (t1 (t2 m)), MonadTransControl t1, MonadError e (t2 m)) => MonadError e (ComposeT t1 t2 m) Source # | Elevated to |
Defined in Control.Monad.Trans.Compose Methods throwError :: e -> ComposeT t1 t2 m a # catchError :: ComposeT t1 t2 m a -> (e -> ComposeT t1 t2 m a) -> ComposeT t1 t2 m a # | |
| (forall (m :: Type -> Type). Monad m => Monad (t2 m), MonadTrans t1, MonadTrans t2) => MonadTrans (ComposeT t1 t2) Source # | |
Defined in Control.Monad.Trans.Compose | |
| (forall (m :: Type -> Type). Monad m => Monad (t2 m), MonadTransControl t1, MonadTransControl t2) => MonadTransControl (ComposeT t1 t2) Source # | |
| Monad (t1 (t2 m)) => Monad (ComposeT t1 t2 m) Source # | |
| Functor (t1 (t2 m)) => Functor (ComposeT t1 t2 m) Source # | |
| Applicative (t1 (t2 m)) => Applicative (ComposeT t1 t2 m) Source # | |
Defined in Control.Monad.Trans.Compose Methods pure :: a -> ComposeT t1 t2 m a # (<*>) :: ComposeT t1 t2 m (a -> b) -> ComposeT t1 t2 m a -> ComposeT t1 t2 m b # liftA2 :: (a -> b -> c) -> ComposeT t1 t2 m a -> ComposeT t1 t2 m b -> ComposeT t1 t2 m c # (*>) :: ComposeT t1 t2 m a -> ComposeT t1 t2 m b -> ComposeT t1 t2 m b # (<*) :: ComposeT t1 t2 m a -> ComposeT t1 t2 m b -> ComposeT t1 t2 m a # | |
| (Monad (t1 (t2 m)), MonadTrans (ComposeT t1 t2), MonadIO m) => MonadIO (ComposeT t1 t2 m) Source # | Elevated to |
Defined in Control.Monad.Trans.Compose | |
| type StT (ComposeT t1 t2) a Source # | |
Defined in Control.Monad.Trans.Compose | |
| type StM (ComposeT t1 t2 m) a Source # | |
Arguments
| :: (forall a. t1 (t2 m) a -> t2 m (StT t1 a)) | run |
| -> (forall a. t2 m a -> m (StT t2 a)) | run |
| -> forall a. ComposeT t1 t2 m a -> m (StT t2 (StT t1 a)) |
Run a transformer stack.
This function takes the two individual monad transformer runners as arguments.
Arguments
| :: (t1 (t2 m) a -> t2 m a) | run |
| -> (t2 m a -> m a) | run |
| -> ComposeT t1 t2 m a -> m a |
Equivalent to runComposeT, but discards the monadic state StT.
This is a simple approach when your monad transformer stack doesn't carry monadic state.
StT(ComposeTt1t2) a ~ a
This can be used to improve error messages when modifying a monad transformer stack.