[Haskell-cafe] Cannot understand liftM2
Dougal Stanton
ithika at gmail.com
Mon Dec 11 11:42:00 EST 2006
Quoth Nicola Paolucci, nevermore:
> 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'm honestly not sure what the actual Monad m is in this case. I'm sure
some enlightened individual will help us out. Maybe Identity?
But I thought you might find this handy --- the interactive console will
give you the type of whole expressions, not just bare functions. It can
be pretty helpful when trying to decode typery.
> :t liftM2
> liftM2 :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
> :t liftM2 (-)
> liftM2 (-) :: (Num a1, Monad m) => m a1 -> m a1 -> m a1
> :t liftM2 (-) snd
> liftM2 (-) snd :: (Num b) => ((a, b) -> b) -> (a, b) -> b
> :t liftM2 (-) snd fst
> liftM2 (-) snd fst :: (Num a) => (a, a) -> a
Cheers,
D.
More information about the Haskell-Cafe
mailing list