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 On Sat, Jul 24, 2010 at 9:30 AM, Max Rabkin <[email protected]> wrote: > On Sat, Jul 24, 2010 at 4:08 PM, aditya siram <[email protected]> wrote: >> I wouldn't-it was a bad example. My only point was that because of the >> way (>>=) is implemented for lists the order of the arguments 'a' and >> 'b' in 'liftM2 f a b' matters. >> >> -deech > > No, it's not. The type of liftM2 makes this clear: > > liftM2 :: (Monad m) => (a -> b -> r) -> m a -> m b -> m r > > The arguments to the function *must* come in the right order, because > there is no way to match (a) with (m b) or (b) with (m a). Since > liftM2 is parametrically polymorphic in (a) and (b), it can't behave > differently in the case where (a = b). > > --Max > _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
