mtl-2.2.1: Monad classes, using functional dependencies

# mtl-2.2.1: Monad classes, using functional dependencies

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).

Modules

- Control
  - Monad
    - Control.Monad.Cont
      - Control.Monad.Cont.Class
    - Control.Monad.Error
      - Control.Monad.Error.Class
    - Control.Monad.Except
    - Control.Monad.Identity
    - Control.Monad.List
    - Control.Monad.RWS
      - Control.Monad.RWS.Class
      - Control.Monad.RWS.Lazy
      - Control.Monad.RWS.Strict
    - Control.Monad.Reader
      - Control.Monad.Reader.Class
    - Control.Monad.State
      - Control.Monad.State.Class
      - Control.Monad.State.Lazy
      - Control.Monad.State.Strict
    - Control.Monad.Trans
    - Control.Monad.Writer
      - Control.Monad.Writer.Class
      - Control.Monad.Writer.Lazy
      - Control.Monad.Writer.Strict