# The compose-trans package

A version of monad transformers that (a) allows one to convince the type checker that transformer application is a monad, and (b) doesn't need lots of boilerplate to add a new transformer. It's supposed to play nicely with `Control.Monad.Trans`.

In order to make a new transformer (say, `T`) an instance of `TransM` (`TransP`, `TransF`) class, all you have to do is:

define

`instance MonadTrans T`— which you've probably done alreadydefine

`instance Monad m => Monad (T m)`— also something quite common (for`TransP`and`TransF`you'd need another instance for`MonadPlus`and`MonadFix`, respectively).write

`instance Trans T where transMInst = instM`— which is exactly one line of boilerplate. Sorry about that.

After that, you can use your new and shiny transformer in compositions, like `ReaderT Char :. T :. WriterT String` — and such a composition would automagically become a monad transformer.

## Properties

Versions | 0.0, 0.1 |
---|---|

Change log | None available |

Dependencies | base (>=2 && <5), mtl [details] |

License | BSD3 |

Author | Miguel Mitrofanov |

Maintainer | miguelimo38@yandex.ru |

Category | Monads |

Uploaded | Sat Nov 5 13:10:11 UTC 2011 by MiguelMitrofanov |

Downloads | 418 total (21 in last 30 days) |

Votes | |

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

## Modules

[Index]

## Downloads

- compose-trans-0.1.tar.gz [browse] (Cabal source package)
- Package description (included in the package)

#### Maintainers' corner

For package maintainers and hackage trustees