prologue-3.2.4: Better, more general Prelude exporting common utilities.

Safe HaskellNone
LanguageHaskell2010

Prologue.Control.Monad.Trans

Synopsis

Documentation

type family MonadTranses (ts :: [(* -> *) -> * -> *]) :: Constraint where ... Source #

Equations

MonadTranses '[] = () 
MonadTranses (t ': ts) = (MonadTrans t, MonadTranses ts) 

lift2 :: (Monad (t1 m), Monad m, MonadTranses '[t1, t2]) => m a -> t2 (t1 m) a Source #

Warning: You should not use lift2 in production code. Use monad transformer stack instead. If you really need it in a very specific use case, use _lift2_ instead.

_lift2_ :: (Monad (t1 m), Monad m, MonadTranses '[t1, t2]) => m a -> t2 (t1 m) a Source #

lift3 :: (Monad (t2 (t1 m)), Monad (t1 m), Monad m, MonadTranses '[t1, t2, t3]) => m a -> t3 (t2 (t1 m)) a Source #

Warning: You should not use lift3 in production code. Use monad transformer stack instead. If you really need it in a very specific use case, use _lift3_ instead.

_lift3_ :: (Monad (t2 (t1 m)), Monad (t1 m), Monad m, MonadTranses '[t1, t2, t3]) => m a -> t3 (t2 (t1 m)) a Source #

lift4 :: (Monad (t3 (t2 (t1 m))), Monad (t2 (t1 m)), Monad (t1 m), Monad m, MonadTranses '[t1, t2, t3, t4]) => m a -> t4 (t3 (t2 (t1 m))) a Source #

Warning: You should not use lift4 in production code. Use monad transformer stack instead. If you really need it in a very specific use case, use _lift4_ instead.

_lift4_ :: (Monad (t3 (t2 (t1 m))), Monad (t2 (t1 m)), Monad (t1 m), Monad m, MonadTranses '[t1, t2, t3, t4]) => m a -> t4 (t3 (t2 (t1 m))) a Source #

lift5 :: (Monad (t4 (t3 (t2 (t1 m)))), Monad (t3 (t2 (t1 m))), Monad (t2 (t1 m)), Monad (t1 m), Monad m, MonadTranses '[t1, t2, t3, t4, t5]) => m a -> t5 (t4 (t3 (t2 (t1 m)))) a Source #

Warning: You should not use lift5 in production code. Use monad transformer stack instead. If you really need it in a very specific use case, use _lift5_ instead.

_lift5_ :: (Monad (t4 (t3 (t2 (t1 m)))), Monad (t3 (t2 (t1 m))), Monad (t2 (t1 m)), Monad (t1 m), Monad m, MonadTranses '[t1, t2, t3, t4, t5]) => m a -> t5 (t4 (t3 (t2 (t1 m)))) a Source #

class MonadTrans (t :: (* -> *) -> * -> *) where #

The class of monad transformers. Instances should satisfy the following laws, which state that lift is a monad transformation:

Minimal complete definition

lift

Methods

lift :: Monad m => m a -> t m a #

Lift a computation from the argument monad to the constructed monad.

Instances
MonadTrans MaybeT 
Instance details

Defined in Control.Monad.Trans.Maybe

Methods

lift :: Monad m => m a -> MaybeT m a #

MonadTrans Free

This is not a true monad transformer. It is only a monad transformer "up to retract".

Instance details

Defined in Control.Monad.Free

Methods

lift :: Monad m => m a -> Free m a #

MonadTrans Yoneda 
Instance details

Defined in Data.Functor.Yoneda

Methods

lift :: Monad m => m a -> Yoneda m a #

MonadTrans (IdentityT :: (* -> *) -> * -> *) 
Instance details

Defined in Control.Monad.Trans.Identity

Methods

lift :: Monad m => m a -> IdentityT m a #

MonadTrans (ExceptT e) 
Instance details

Defined in Control.Monad.Trans.Except

Methods

lift :: Monad m => m a -> ExceptT e m a #

MonadTrans (FreeT f) 
Instance details

Defined in Control.Monad.Trans.Free

Methods

lift :: Monad m => m a -> FreeT f m a #

Alternative f => MonadTrans (CofreeT f) 
Instance details

Defined in Control.Comonad.Trans.Cofree

Methods

lift :: Monad m => m a -> CofreeT f m a #

MonadTrans (ErrorT e) 
Instance details

Defined in Control.Monad.Trans.Error

Methods

lift :: Monad m => m a -> ErrorT e m a #