On 17/08/10 17:13, Tilo Wiklund wrote:
On 24/07/2010, aditya siram<aditya.si...@gmail.com> wrote:
Perhaps I'm being unclear again. All I was trying to say was that:
liftM2 (-) [0,1] [2,3] /= liftM2 (-) [2,3] [0,1]
-deech
I'm sorry if I'm bumping an old thread, but why should "liftM2 f" be
commutative when "f" isn't?
(I hope I'm not responding incorrectly)
I think the point that was being made is that:
liftM2 (flip f) /= flip (liftM2 f)
This is because the former (well: liftM2 (flip f) a b) effectively does:
do {x <- a; y <- b; return (f y x)}
Whereas the latter (flip (liftM2 f) a b) effectively does:
do {y <- b; x <- a; return (f y x)}
That is, the order of the arguments to liftM2 matters because they are
executed in that order. So lifting the flipped function has a different
effect to flipping the lifted function.
Thanks,
Neil.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe