[Haskell-cafe] Heavy lift-ing

aditya siram aditya.siram at gmail.com
Sat Jul 24 10:35:16 EDT 2010


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 <max.rabkin at gmail.com> wrote:
> On Sat, Jul 24, 2010 at 4:08 PM, aditya siram <aditya.siram at gmail.com> 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
>


More information about the Haskell-Cafe mailing list