pass +transformers

pass :: (Monoid w, Monad m) => RWST r w s m (a, w -> w) -> RWST r w s m a
transformers Control.Monad.Trans.RWS.Lazy, transformers Control.Monad.Trans.RWS.Strict
pass m is an action that executes the action m, which returns a value and a function, and returns the value, applying the function to the output. *  (pass m) r s = liftM (\((a, f), > w) -> (a, f w)) (runRWST m r  
pass :: (Monoid w, Monad m) => WriterT w m (a, w -> w) -> WriterT w m a
transformers Control.Monad.Trans.Writer.Lazy, transformers Control.Monad.Trans.Writer.Strict
pass m is an action that executes the action m, which returns a value and a function, and returns the value, applying the function to the output. *  (pass m) = liftM (\((a, f), > w) -> (a, f w)) (runWriterT  
liftPass :: Monad m => (m ((a, s), b) -> m (a, s)) -> StateT s m (a, b) -> StateT s m a
transformers Control.Monad.Trans.State.Lazy, transformers Control.Monad.Trans.State.Strict
Lift a pass operation to the new monad.
liftPass :: Monad m => (m (Either e a, w -> w) -> m (Either e a)) -> ErrorT e m (a, w -> w) -> ErrorT e m a
transformers Control.Monad.Trans.Error
Lift a pass operation to the new monad.
liftPass :: Monad m => (m (Maybe a, w -> w) -> m (Maybe a)) -> MaybeT m (a, w -> w) -> MaybeT m a
transformers Control.Monad.Trans.Maybe
Lift a pass operation to the new monad.