prologue-3.2.3: 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 #