monad-wrap
Version 0.0 revision 0 uploaded by DavidMazieres.
Package meta
- Synopsis
- Wrap functions such as catch around different monads
- Description
This package allows you to invoke a function on one monadic type passing it an argument of a different monadic type. The canonical example of this is wanting to use a function such as
finally :: IO a -> IO a
to catch exceptions thrown by a computationx :: ReaderT MyConfig IO b
. Ifx
uses the ReaderT function ask, it cannot be re-written to run in the IO monad, and hence cannot be executed with a construction likelift (x `finally` cleanup)
. Instead, you must use the wrap method, provide by module Control.Monad.Wrap. This package contains two further modules: Control.Monad.MultiWrap implements mwrap, a method that behaves like wrap but allows wrapping through multiple nested layers of monad transformer. The module Control.Monad.MultiLift provides mlift, a version of lift that similarly lifts through multiple nested monad transformers.- Author
- David Mazieres
- Bug reports
- n/a
- Category
- Control
- Copyright
- n/a
- Homepage
- n/a
- Maintainer
- http://www.scs.stanford.edu/~dm/addr/
- Package URL
- n/a
- Stability
- experimental