Monad classes, using functional dependencies

Version on this page:
LTS Haskell 10.6:2.2.1
Stackage Nightly 2018-02-23:2.2.1
Latest on Hackage:2.2.1

See all snapshots mtl appears in

BSD3 licensed by Andy Gill
Maintained by Edward Kmett

Module documentation for

There are no documented modules for this package.

Monad classes using functional dependencies, with instances for various monad transformers, inspired by the paper Functional Programming with Overloading and Higher-Order Polymorphism, by Mark P Jones, in Advanced School of Functional Programming, 1995 (



  • Provide MINIMAL pragmas for MonadState, MonadWriter, MonadReader
  • Added a cyclic definition of ask in terms of reader for consistency with get/put vs. state and tell vs. writer
  • Fix deprecation warnings caused by transformers 0.4 deprecating ErrorT.
  • Added Control.Monad.Except in the style of the other mtl re-export modules

  • Fixed a bug caused by the change in how transformers 0.4 exports its data types. We will now export runFooT for each transformer again!


  • transformers 0.4 support
  • Added instances for ExceptT
  • Added modify' to Control.Monad.State.*

  • Avoid importing Control.Monad.Instances on GHC 7.8 to build without deprecation warnings.


  • Removed the now-irrelevant Error constraint from the MonadError instance for Either e.
comments powered byDisqus