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

Herbert Valerio Riedel hvr at
Fri Sep 25 16:54:12 UTC 2015

On 2015-09-25 at 04:40:25 +0200, Edward Kmett wrote:
> I'm a rather enthusiastic +1 on this, given a sufficiently long time table
> for the switch!
> We ARE asking a lot of people to break code here.
> It does drastically reduce the amount of "magic" involved in the
> ApplicativeDo story and avoids enshrining the current historical artifact
> in a future Haskell report that includes the AMP.
> I'd also like to consider employing the exact same migration plan for (>>)
> at the same time. It is redundant with (*>), and the choice of which gets
> implemented in terms of the other introduces precisely the same set of
> issues. If we can do that then this would fix the remaining performance
> issues for mapM, letting us eventually remove that from Traversable as
> well, moving it to a top level alias in the same way -- maybe not until 8.8
> or something, but it'd at least give us a roadmap to get there
> eventually.


It makes totally sense to apply the same treatment for `Monad((>>))`
also because the same warning machinery in GHC can be reused for that.

A simple grep heuristic shows about 114 packages affected:

More information about the Libraries mailing list