Я пытаюсь понять, что делает оператор точек в этом коде Haskell:
sumEuler = sum . (map euler) . mkList
Весь исходный код приведен ниже.
Мое понимание
Точечный оператор принимает две функции sum
и результат map euler
и результат mkList
в качестве входа.
Но, sum
не является функцией, это аргумент функции, правильно? и так, что здесь происходит?
Также, что делает (map euler)
?
код
mkList :: Int -> [Int]
mkList n = [1..n-1]
euler :: Int -> Int
euler n = length (filter (relprime n) (mkList n))
sumEuler :: Int -> Int
sumEuler = sum . (map euler) . mkList