name: layers version: 0.1 synopsis: Modular type class machinery for monad transformer stacks. license: BSD3 license-file: LICENSE author: Shane O'Brien maintainer: shane@duairc.com stability: Experimental category: Control cabal-version: >= 1.6 homepage: http://github.com/duairc/layers bug-reports: http://github.com/duairc/layers/issues build-type: Simple description: 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. extra-source-files: CONTRIBUTORS Library hs-source-dirs: src exposed-modules: Documentation.Layers.Overview Control.Monad.Layer Control.Monad.Interface.Cont Control.Monad.Interface.Exception Control.Monad.Interface.Fork Control.Monad.Interface.Mask Control.Monad.Interface.MutVar Control.Monad.Interface.Reader Control.Monad.Interface.RWS Control.Monad.Interface.State Control.Monad.Interface.Try Control.Monad.Interface.Writer build-depends: base > 4.5 && < 5, transformers > 0.2 && < 0.4 ghc-options: -Wall