我一直在用Haskell玩一下,包括以无点形式练习写作功能。下面是一个示例函数:为什么这个函数的免提版本看起来像这样?
dotProduct :: (Num a) => [a] -> [a] -> a
dotProduct xs ys = sum (zipWith (*) xs ys)
我想用无点形式写这个函数。下面是我在别处找到了一个例子:
dotProduct = (sum .) . zipWith (*)
不过,我不明白为什么自由点的形式看起来像(sum .) . zipWith (*)
而不是sum . zipWith (*)
。为什么总括在括号内并且有2个组合运算符?
这部分中的'* *'f * g ==(f *)g'与'.'函数组合相同吗? – guhou 2010-06-26 12:18:09
@Bleu:是的。任何二元运算符都可以。 – kennytm 2010-06-26 12:32:56