Implement Functor => Applicative => Monad Hierarchy (aka AMP phase 3)
The standard class hierarchy is a consequence of Haskell's historical development, rather than logic. I would therefore like to propose a reform of the Functor, Applicative, and Monad type classes. The new hierarchy is logical, eliminates many duplicate names from the standard type class definitions, and removes the need for boilerplate Monad -> Applicative instance declarations.
The proposal is detailed in the wiki, along with an example of a legacy module to provide some backwards-compatibility.