layers: Modular type class machinery for monad transformer stacks.
The layers
package provides the type class machinery needed to make monads
built out of stacks of monad transformers easy to use. It introduces the
concept of monad layers, which are a generalisation of monad transformers.
The type class machinery provided by and the design patterns suggested by
layers
allow for much more modularity than is possible with the existing
type class machinery and design patterns. With layers
it is possible to
use arbitrary monad interfaces (monad interfaces are what we call the sort
of type classes that you see in the mtl
and similar packages) with
arbtirary monad transformers (by monad transformers here, we are
specifically to monad constructors, such as the ones defined in
transformers
), without ever having to explicitly define how to lift
specific interfaces through specific transformers.
layers
improves upon and/or replaces, in part or in whole, the following
list of packages: transformers
, mtl
, mmtl
, transformers-base
,
monad-control
, lifted-base
, monad-peel
, MonadCatchIO-transformers
,
MonadCatchIO-mtl
, exception-transformers
, monad-abort-fd
and probably
more too. There have been many attempts to either improve upoin or work
around the deficiencies of the existing type class machinery for monad
transformer stacks, but we believe layers
is the most complete of any of
these so far.
A comprehensive overview of the motivation behind layers
and an
explanation of the design decisions taken is given in
Documentation.Layers.Overview. It is highly recommended that you read
this if you are considering using this package. The core type classes of the
package are defined in Control.Monad.Layer (this can be thought of as
equivalent to or a replacement of Control.Monad.Trans.Class from
transformers
). The rest of the modules in this package export monad
interfaces, in the Control.Monad.Interface hierarchy, including
replacements for all of the monad interfaces of the mtl
package.
Downloads
- layers-0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.1 |
---|---|
Dependencies | base (>4.5 && <5), transformers (>0.2 && <0.4) [details] |
License | BSD-3-Clause |
Author | Shane O'Brien |
Maintainer | shane@duairc.com |
Category | Control |
Home page | http://github.com/duairc/layers |
Bug tracker | http://github.com/duairc/layers/issues |
Uploaded | by ShaneOBrien at 2013-03-14T20:12:04Z |
Distributions | |
Reverse Dependencies | 2 direct, 2 indirect [details] |
Downloads | 1370 total (6 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |