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 criterion based benchmark shows that monad-control is on
average about 99% faster than monad-peel:

Modules

Flags

Name

Description

Default

Type

instancest

If enabled this package will export MonadBaseControl instances for the lazy
and strict ST monad. If disabled these instances are only exported when base
>= 4.4. If enabled it is required that the transformer-base package exports
MonadBase instances for ST. It will do this by default.

Enabled

Automatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Readme for monad-control

Readme for monad-control-0.3.1.3

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.

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.

This critertion
based benchmark shows that monad-control is on average about 2.5
times faster than monad-peel.