我一直在玩弄Haskell,包括练习以无参形式编写函数。这里是一个示例函数:
dotProduct :: (Num a) => [a] -> [a] -> a
dotProduct xs ys = sum (zipWith (*) xs ys)
我想以点语法的形式编写这个函数。这是我在其他地方找到的一个例子:
dotProduct = (sum .) . zipWith (*)
然而,我不理解为什么点无关形式看起来像 (sum .) . zipWith (*)
而不是 sum . zipWith (*)
。为什么 sum 要加括号并且有两个组合运算符?
f * g == (f *) g
中的*
是否和.
函数组合是一样的意思? - guhou