# 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`:

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 | None available |

Dependencies | base (>=3 && <4.7), 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> |

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 | Thu Mar 7 22:12:58 UTC 2013 by BasVanDijk |

Distributions | Arch:1.0.1.0, Debian:1.0.0.4, Fedora:0.3.3.1, FreeBSD:1.0.0.4, LTSHaskell:1.0.1.0, NixOS:1.0.1.0, Stackage:1.0.1.0 |

Downloads | 168129 total (47 in last 30 days) |

Votes | |

Status | Docs uploaded by user Build status unknown [no reports yet] |

## Modules

*Control**Monad*

[Index]

## 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

- monad-control-0.3.2.tar.gz [browse] (Cabal source package)
- Package description (included in the package)

#### Maintainers' corner

For package maintainers and hackage trustees