The monad-control package

[Tags:bsd3, library]

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:

git clone https://github.com/basvandijk/bench-monad-peel-control

[Skip to Readme]

Properties

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, 1.0.0.0, 1.0.0.1, 1.0.0.2, 1.0.0.3, 1.0.0.4, 1.0.0.5, 1.0.1.0
Change log NEWS
Dependencies base (>=3 && <5), base-unicode-symbols (>=0.1.1 && <0.3), transformers (>=0.2 && <0.4), transformers-base (>=0.4.1 && <0.5) [details]
License BSD3
Copyright (c) 2011 Bas van Dijk, Anders Kaseorg
Author Bas van Dijk, Anders Kaseorg
Maintainer Bas van Dijk <v.dijk.bas@gmail.com>
Stability Unknown
Category Control
Home page https://github.com/basvandijk/monad-control
Bug tracker https://github.com/basvandijk/monad-control/issues
Source repository head: git clone git://github.com/basvandijk/monad-control.git
Uploaded Tue Apr 23 16:41:01 UTC 2013 by BasVanDijk
Distributions Arch:1.0.1.0, Debian:1.0.0.4, Fedora:1.0.1.0, FreeBSD:1.0.0.4, LTSHaskell:1.0.1.0, NixOS:1.0.1.0, Stackage:1.0.1.0, Tumbleweed:1.0.1.0
Downloads 168858 total (152 in the last 30 days)
Votes
0 []
Status Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Flags

NameDescriptionDefaultType
instancestIf 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.EnabledAutomatic

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

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for monad-control

Readme for monad-control-0.3.2.1

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.