The monad-wrap package
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 computation x :: ReaderT MyConfig IO b. If x uses the ReaderT function ask, it cannot be re-written to run in the IO monad, and hence cannot be executed with a construction like lift (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.
Properties
| Versions | 0.0, 0.1 |
|---|---|
| Dependencies | base (4.*), mtl (≥1.1.0.2 & <2) |
| License | BSD3 |
| Author | David Mazieres |
| Maintainer | http://www.scs.stanford.edu/~dm/addr/ |
| Stability | experimental |
| Category | Control |
| Upload date | Sat Oct 17 22:11:52 UTC 2009 |
| Uploaded by | DavidMazieres |
| Built on | ghc-6.10, ghc-6.12, ghc-7.0 |
Modules
Downloads
- monad-wrap-0.0.tar.gz (Cabal source package)
- package description (included in the package)