@hackage MonadCompose0.6.0.0

Methods for composing monads.

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.