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
(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).