Monad of no `return` Proposal (MRP): Moving `return` out of `Monad`

Bertram Felgenhauer bertram.felgenhauer at
Fri Sep 25 11:22:09 UTC 2015

David Feuer wrote:
> +1 on both the goal and the means of reaching it. That said, I suspect
> the claim that "This has a comparable impact to the AMP" may be overly
> optimistic.

I want to echo this concern. In fact, the most common way of fixing code
after the AMP proposal seems to have been to mechanically add instances

  instance Functor Foo where
    fmap = liftM

  instance Applicative Foo where
    pure = return
    (<*>) = ap

whenever the compiler complained about a missing Applicative instance for
a monad Foo. All those Applicative instances would have to be rewritten
under the MRP proposal, and that task is not purely mechanical, since it
involves moving existing code, so I'd say that the burden would be higher
than after the AMP proposal.

How many of those Applicative instances are there in hackage?



More information about the Libraries mailing list