The monad-control package
This package defines the type class MonadBaseControl, a subset of MonadBase into which generic control operations such as catch can be lifted from IO or any other base monad. Instances are based on monad transformers in MonadTransControl, which includes all standard monad transformers in the transformers library except ContT.
See the lifted-base package which uses monad-control to lift IO operations from the base library (like catch or bracket) into any monad that is an instance of MonadBase or MonadBaseControl.
Note that this package is a rewrite of Anders Kaseorg's monad-peel library. The main difference is that this package provides CPS style operators and exploits the RankNTypes and TypeFamilies language extensions to simplify and speedup most definitions.
The following critertion based benchmark shows that monad-control is on average about 99% faster than monad-peel:
[Skip to ReadMe]
|Versions||0.1, 0.2, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.3, 0.3.0.1, 0.3.1, 0.3.1.1, 0.3.1.2, 0.3.1.3, 0.3.1.4, 0.3.2, 0.3.2.1, 0.3.2.2, 0.3.2.3, 0.3.3.0, 0.3.3.1, 184.108.40.206, 220.127.116.11, 18.104.22.168, 22.214.171.124, 126.96.36.199|
|Change log||None available|
|Dependencies||base (>=3 && <4.5), base-unicode-symbols (>=0.1.1 && <0.3), transformers (==0.2.*), transformers-base (==0.4.*) [details]|
|Copyright||(c) 2011 Bas van Dijk, Anders Kaseorg|
|Author||Bas van Dijk, Anders Kaseorg|
|Maintainer||Bas van Dijk <email@example.com>|
|Source repository||head: git clone git://github.com/basvandijk/monad-control.git|
|Uploaded||Sat Dec 3 11:38:31 UTC 2011 by BasVanDijk|
|Distributions||Debian:188.8.131.52, Fedora:0.3.3.1, FreeBSD:184.108.40.206, LTSHaskell:220.127.116.11, NixOS:18.104.22.168, Stackage:22.214.171.124|
|Downloads||166632 total (755 in last 30 days)|
|Status||Docs uploaded by user|
Build status unknown [no reports yet]
- monad-control-0.3.0.1.tar.gz [browse] (Cabal source package)
- Package description (included in the package)
For package maintainers and hackage trustees