I'm trying to understand what the dot operator is doing in this Haskell code:
sumEuler = sum . (map euler) . mkList
The entire source code is below.
My understanding:
The dot operator is taking the two funtions 'sum' and the result of 'map euler' and the result of mkList as the input.
But, 'sum' isn't a function it is the argument of the function,right? So what is going on here?
Also, what is (map euler) doing?
code:
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