[Haskell-cafe] Monad of no `return` Proposal (MRP): Moving `return` out of `Monad`

Erik Hesselink hesselink at gmail.com
Mon Oct 5 19:02:26 UTC 2015


On 5 October 2015 at 20:58, Sven Panne <svenpanne at gmail.com> wrote:
> 2015-10-05 17:09 GMT+02:00 Gershom B <gershomb at gmail.com>:
>>
>> [...] As for libraries, it has been pointed out, I believe, that without
>> CPP one can write instances compatible with AMP, and also with AMP + MRP.
>> One can also write code, sans CPP, compatible with pre- and post- AMP. [...]
>
> Nope, at least not if you care about -Wall: If you take e.g. (<$>) which is
> now part of the Prelude, you can't simply import some compatibility module,
> because GHC might tell you (rightfully) that that import is redundant,
> because (<$>) is already visible through the Prelude. So you'll have to use
> CPP to avoid that import on base >= 4.8, be it from it Data.Functor,
> Control.Applicative or some compat-* module. And you'll have to use CPP in
> each and every module using <$> then, unless I miss something obvious.
> AFAICT all transitioning guides ignore -Wall and friends...

Does the hack mentioned on the GHC trac [1] work for this? It seems a
bit fragile but that page says it works and it avoids CPP.

Erik

[1] https://ghc.haskell.org/trac/ghc/wiki/Migration/7.10#GHCsaysTheimportof...isredundant


More information about the Haskell-Cafe mailing list