Welcome! This is a library written in the programming language Haskell. It can be used by Haskell programmers to quickly construct monads---abstract data types that capture common programming idioms. The library provides a number of building blocks called monad transformers, that can be combined to construct quickly very complicated monads.



  • 11 Aug 2008: There is a page for monadLib on the Haskell wiki.
  • 5 Feb 2008: Version 3.4.4 is now available. Some changes: a new backtracking transformer called ChoiceT, strictness tweaks, Applicative and Alternative instances, instances of ExceptionM for IO.
  • 17 Sep 2007: Version 3.3.0 is now available. It adds an identity transformer (useful as a place-holder) and functions to "derive" basic functions.
  • 18 Jan 2007: Version 3.1.0 is now available. It features a new strict identity monad called 'Lift'.
  • 02 Jan 2007: Version 3.0.0 is now available. Note that, while similar, it is not a drop-in replacement for Version 2.
  • 02 Jan 2007: Happy New Year!
  • 12 December 2006: A new major release is coming soon!
  • 12 December 2006: To compile monadLib with GHC 6.6 you need to add the flag -fallow-undecidable-instances to the cabal file.
  • 19 April 2006: Version 2.0.1 released (small changes in Monad.Combinators).
  • 12 April 2006: A new look for the web site.
  • 19 March 2006: Version 2.0 released.


monadLib is available on hackage.



The library is distributed in source form and is written entirely in Haskell. It uses the following Haskell extensions:
  • Multi parameter classes
  • Rank 2 polymorphism
  • Functional dependencies

Quick Start

The simplest (but perhaps not nicest) way to get started is to copy the source files to your project directory. Up to version 2 the directory structure mattered. As of version 3, the library is in a single file so you just need to place MonadLib.hs in a location where your Haskell implementation will find it.


From version 1.2.2 the library supports the Cabal infrastructure. See the INSTALL file that comes with the source code for details.