Concrete functor and monad transformers

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

See all snapshots transformers appears in

BSD3 licensed by Andy Gill, Ross Paterson
Maintained by Ross Paterson

Module documentation for

There are no documented modules for this package.

A portable library of functor and 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 (

This package contains:

  • the monad transformer class (in Control.Monad.Trans.Class)

  • concrete functor and monad transformers, each with associated operations and functions to lift operations associated with other transformers.

The package can be used on its own in portable Haskell code, in which case operations need to be manually lifted through transformer stacks (see Control.Monad.Trans.Class for some examples). Alternatively, it can be used with the non-portable monad classes in the mtl or monads-tf packages, which automatically lift operations introduced by monad transformers through other transformers.


-*-change-log-*- Ross Paterson <> Oct 2017
* Added mapSelect and mapSelectT
* Renamed selectToCont to selectToContT for consistency
* Defined explicit method definitions to fix space leaks
* Added missing Semigroup instance to `Constant` functor Ross Paterson <> Feb 2017
* Migrate Bifoldable and Bitraversable instances for Constant Ross Paterson <> Feb 2017
* Fixed for pre-AMP environments Ross Paterson <> Feb 2017
* Added AccumT and SelectT monad transformers
* Deprecated ListT
* Added Monad (and related) instances for Reverse
* Added elimLift and eitherToErrors
* Added specialized definitions of several methods for efficiency
* Removed specialized definition of sequenceA for Reverse
* Backported Eq1/Ord1/Read1/Show1 instances for Proxy Ross Paterson <> Feb 2016
* Re-added orphan instances for Either to deprecated module
* Added lots of INLINE pragmas Ross Paterson <> Jan 2016
* Bump minor version number, required by added instances Ross Paterson <> Jan 2016
* Backported extra instances for Identity Ross Paterson <> Jan 2016
* Tightened GHC bounds for PolyKinds and DeriveDataTypeable Ross Paterson <> Dec 2015
* Control.Monad.IO.Class in base for GHC >= 8.0
* Data.Functor.{Classes,Compose,Product,Sum} in base for GHC >= 8.0
* Added PolyKinds for GHC >= 7.4
* Added instances of base classes MonadZip and MonadFail
* Changed liftings of Prelude classes to use explicit dictionaries Ross Paterson <> Mar 2015
* Added Eq1, Ord1, Show1 and Read1 instances for Const Ross Paterson <> Nov 2014
* Dropped compatibility with base-1.x
* Data.Functor.Identity in base for GHC >= 7.10
* Added mapLift and runErrors to Control.Applicative.Lift
* Added AutoDeriveTypeable for GHC >= 7.10
* Expanded messages from mfix on ExceptT and MaybeT Ross Paterson <> May 2014
* Reverted to record syntax for newtypes until next major release Ross Paterson <> May 2014
* Added Sum type
* Added modify', a strict version of modify, to the state monads
* Added ExceptT and deprecated ErrorT
* Added infixr 9 `Compose` to match (.)
* Added Eq, Ord, Read and Show instances where possible
* Replaced record syntax for newtypes with separate inverse functions
* Added delimited continuation functions to ContT
* Added instance Alternative IO to ErrorT
* Handled disappearance of Control.Monad.Instances Ross Paterson <> Mar 2012
* Added type synonyms for signatures of complex operations
* Generalized state, reader and writer constructor functions
* Added Lift, Backwards/Reverse
* Added MonadFix instances for IdentityT and MaybeT
* Added Foldable and Traversable instances
* Added Monad instances for Product Ross Paterson <> Oct 2013
* Backport of fix for disappearance of Control.Monad.Instances Ross Paterson <> Sep 2010
* Handled move of Either instances to base package Ross Paterson <> Apr 2010
* Added Alternative instance for Compose
* Added Data.Functor.Product Ross Paterson <> Mar 2010
* Added Constant and Compose
* Renamed modules to avoid clash with mtl
* Removed Monad constraint from Monad instance for ContT Ross Paterson <> Mar 2009
* Adjusted lifting of Identity and Maybe transformers Ross Paterson <> Mar 2009
* Added IdentityT transformer
* Added Applicative and Alternative instances for (Either e) Ross Paterson <> Jan 2009
* Made all Functor instances assume Functor Ross Paterson <> Jan 2009
* Adjusted dependencies Ross Paterson <> Jan 2009
* Two versions of lifting of callcc through StateT
* Added Applicative instances Ross Paterson <> Jan 2009
* Added constructors state, etc for simple monads Ross Paterson <> Jan 2009
* Split Haskell 98 transformers from the mtl
comments powered byDisqus