[Haskell-cafe] fmap vs. liftM

Henning Thielemann lemming at henning-thielemann.de
Wed Feb 6 08:50:11 EST 2008

On Tue, 5 Feb 2008, Felipe Lessa wrote:

> On Feb 5, 2008 6:06 PM, Dan Weston <westondan at imageworks.com> wrote:
> > Can you do this with a GHC rule? Something like:
> >
> > {-# RULES
> >        "join_dot_fmap_return/id"  forall x . join (fmap return x) = x
> > #-}
> >
> > Dan
> I guess this would make use of the rule (otherwise the transformation
> would change the code's semantic) but would not enforce that the rule
> itself is valid (which is undecidable).

I have already thought about (ab)using GHC rules for forcing programmers
to take care. :-) That is, if the rule would be stated as above, then
programmers _have_ to ensure that the law is satisfied, and the optimizer
will penalize violations of the rules with non-working code.

More information about the Haskell-Cafe mailing list