Monad Transformer Library
The MTL provides a selection of monads and their transformer variants along with type classes that allow uniform handling of a base monad and its transformer.
See the package on Hackage.
Version 2 of the MTL has some small incompatibilities relative to version 1. See "Upgrading from MTL 1 to MTL 2" for instructions on how to make code written for version 1 work with version 2.