monad-control-0.2.0.1: Lift control operations, like exception catching, through monad transformers
This package defines the type class MonadControlIO
, a subset of
MonadIO
into which generic control operations such as catch
can
be lifted from IO
. Instances are based on monad transformers in
MonadTransControl
, which includes all standard monad transformers
in the transformers
library except ContT
. For convenience, it
provides a wrapped version of Control.Exception
with types
generalized from IO
to all monads in MonadControlIO
.
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
language extension to
simplify most definitions.
The package includes a copy of the monad-peel
testsuite written by Anders Kaseorg.
The tests can be performed by using cabal test
.
The following critertion
based benchmark shows that monad-control
is on average about 2.5 times faster than monad-peel
:
http://code.haskell.org/~basvandijk/code/bench-monad-peel-control
Modules
- Control
- Exception
- Monad