monad-control

Lift control operations, like exception catching, through monad transformers

https://github.com/basvandijk/monad-control

Version on this page:1.0.1.0
LTS Haskell 22.39:1.0.3.1
Stackage Nightly 2024-10-31:1.0.3.1
Latest on Hackage:1.0.3.1

See all snapshots monad-control appears in

BSD-3-Clause licensed by Bas van Dijk, Anders Kaseorg
Maintained by Bas van Dijk
This version can be pinned in stack with:monad-control-1.0.1.0@sha256:d3bdba4ea9f4dc957fb3d2a8c38db7f119dac64dddb9d2c9eb8ade4b268d86de,2206

Module documentation for 1.0.1.0

Hackage Build Status

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 criterion based benchmark shows that monad-control is on average about 2.5 times faster than monad-peel.