
11 Dec
2006
11 Dec
'06
5:10 p.m.
I'm loving learning Haskell quite a bit. It is stretching my brain but in a delightfull way.
Great!
Using the cool lambdabot "pointless" utility I found out that:
\x -> snd(x) - fst(x)
is the same as:
liftM2 (-) snd fst
Yes, the '(->) c' monad is very handy. One way to think about it is viewing 'f :: c -> a' as a set of 'a''s, indexed by the set of 'c''s. The monad operations are then easily understood as doing things 'pointwise': given some specific index (e.g. 'x'), you use this index to select the appropriate value of every relevant indexed object (e.g. 'snd' and 'fst'), and then apply the unlifted function (e.g. '(-)') to those. Another way to write the above function is 'uncurry (flip (-))', or 'uncurry subtract'. Regards, Arie