Lift control operations, like exception catching, through monad transformers.
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.