Monad classes, using functional dependencies

Version on this page:
LTS Haskell 12.22:2.2.2
Stackage Nightly 2018-12-15:2.2.2
Latest on Hackage:2.2.2

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.

The mtl Package Hackage Build Status

See mtl on Hackage for more information.



  • Control.Monad.Identity now re-exports Control.Monad.Trans.Identity
  • Fix a bug in which Control.Monad.State.Class.modify' was not as strict in the new state as its counterparts in transformers
  • Add a MonadError () Maybe instance
  • Add liftEither :: MonadError e m => Either e a -> m a to Control.Monad.Except{.Class}
  • Add a MonadWriter w ((,) w) instance (when built against base-4.9 or later)


  • 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