我一直在用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