name: MonadCompose version: 0.6.0.0 synopsis: Methods for composing monads. description: Methods for composing monads. The IO monad transformer solves the problem of combining two IO-performing monad transformers, so that neither one needs to provide a MonadIO interface, and both can be transformed separately. Most known monads have a distributive law. The Distributive module implements distributivity for monad transformers. A monad transformer can transform another monad, but if you have two monads both lacking a transformer, there is little you can do in general. However, you can compose them in a coproduct construction. The PlusMonad module implements a similar plan, but differs from coproducts in that it doesn't compress together contiguous uses of a monad. Another mystery is how to get the other distributive law (m(x + y) -> mx + my). I would like the auto-lifter and the Plus monad to work together, but I can't figure out how to coax IncoherentInstances to support it. homepage: http://alkalisoftware.net license: BSD3 license-file: LICENSE author: James Candy maintainer: info@alkalisoftware.net -- copyright: category: Monad build-type: Simple cabal-version: >=1.8 library exposed-modules: Control.Monad.IOT, Control.Monad.Distributive, Control.Monad.PlusMonad, Control.Monad.Lifter -- other-modules: build-depends: base >=4 && <=5, ghc-prim ==0.3.*, mtl ==2.1.*, mmorph ==1.0.*, monad-products, transformers, MaybeT