mtlx: Monad transformer library with type indexes, providing 'free' copies.

[ bsd3, control, library ] [ Propose Tags ]

A monad transformer library with type indexes, which allows the programmer to get a distinct copy of one of the monads without reproducing definitions and instances. It currently supports IdentityX, ReaderX, StateX, WriterX, RWSX, and ErrorX monads (and their transformer versions). All these copies can be combined into a transformer stack, including any of the original mtl monads. Inspired by the original mtl. That library was inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, by Mark P Jones (, Advanced School of Functional Programming, 1995. See the Examples.hs file for usage.

Versions [faq] 0.1, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6
Dependencies base (==4.*), mtl, QuickCheck (>= [details]
License BSD-3-Clause
Author Mark Snyder
Category Control
Uploaded by MarkSnyder at Mon Oct 15 23:15:01 UTC 2012
Distributions NixOS:0.1.6
Downloads 3734 total (181 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-12-23 [all 8 reports]


  • Control
    • Monad
      • Control.Monad.ErrorX
        • Control.Monad.ErrorX.Class
      • Control.Monad.IdentityX
      • Control.Monad.Index
      • Control.Monad.RWSX
        • Control.Monad.RWSX.Class
        • Control.Monad.RWSX.Lazy
        • Control.Monad.RWSX.Strict
      • Control.Monad.ReaderX
        • Control.Monad.ReaderX.Class
      • Control.Monad.StateX
        • Control.Monad.StateX.Class
        • Control.Monad.StateX.Lazy
        • Control.Monad.StateX.Strict
      • Control.Monad.WriterX
        • Control.Monad.WriterX.Class
        • Control.Monad.WriterX.Lazy
        • Control.Monad.WriterX.Strict


Maintainer's Corner

For package maintainers and hackage trustees