ポイントフリー形式での書き込み関数の練習など、Haskell をかなりいじっています。関数の例を次に示します。
dotProduct :: (Num a) => [a] -> [a] -> a
dotProduct xs ys = sum (zipWith (*) xs ys)
この関数をポイントフリー形式で書きたいと思います。他の場所で見つけた例を次に示します。
dotProduct = (sum .) . zipWith (*)
(sum .) . zipWith (*)
しかし、ポイントフリーフォームが の代わりに のように見える理由がわかりませんsum . zipWith (*)
。sum が角かっこで囲まれ、合成演算子が 2 つあるのはなぜですか?