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. WWW: http://hackage.haskell.org/package/mtl