Я играю с Haskell с честью, в том числе и с практическими функциями написания в бесконтактной форме. Вот примерная функция:
dotProduct :: (Num a) => [a] -> [a] -> a
dotProduct xs ys = sum (zipWith (*) xs ys)
Я хотел бы написать эту функцию в свободной форме. Вот пример, который я нашел в другом месте:
dotProduct = (sum .) . zipWith (*)
Однако я не понимаю, почему точка без формы выглядит как (sum .) . zipWith (*)
вместо sum . zipWith (*)
. Почему сумма заключена в скобки и имеет 2 композиционных оператора?