
On Fri, 2 Oct 2015, Manuel Gómez wrote:
In a post-AMP Haskell, however, retaining `return` in `Monad` does not serve any purpose: any `Monad` instance requires an `Applicative` instance, wherein `pure` must be defined, and it is a law required by all instances that they behave identically. The only expressive purpose of `return` being in the `Monad` type class is providing an opportunity to break the laws the community expects for all instances of `Monad`.
We will get constant breakage this way. You mentioned Pointed class. If it appears one day then your argument would translate to: We must acknowledge that 'pure' was always wrong in Applicative. Then we will have an APP (Applicative without 'pure' proposal) that again breaks lots of code without a way to code for multiple versions of base.