[Haskell-cafe] Re: Cannot understand liftM2

Jón Fairbairn jon.fairbairn at cl.cam.ac.uk
Mon Dec 11 11:55:17 EST 2006


"Nicola Paolucci" <durden at gmail.com> writes:

> Hi All,
> 
> I'm loving learning Haskell quite a bit.
> It is stretching my brain but in a delightfull way.
> 
> I've googled, I've hoogled but I haven't found a clear explanation for
> what exactly liftM2 does in the context below.
> 
> Using the cool lambdabot "pointless" utility I found out that:
> 
> > \x -> snd(x) - fst(x)
> 
> is the same as:
> 
> > liftM2 (-) snd fst
> 
> I like the elegance of this but I cannot reconcile it with its type. I
> can't understand it.
> I check the signature of liftM2 and I get:
> 
> Prelude> :t liftM2
> Prelude> liftM2 :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
> 
> Can someone help me understand what's happening here ?
> What does a Monad have to do with a simple subtraction ?
> What is actually the "m" of my example ?
> 
> I am sure if I get this I'll be another step closer to illumination ...

Does typing 

 :t liftM2 (-) snd

into ghc enlighten you at all?

-- 
Jón Fairbairn                                 Jon.Fairbairn at cl.cam.ac.uk



More information about the Haskell-Cafe mailing list