私はこのHaskellコードでドット演算子が何をしているのかを理解しようとしています:
sumEuler = sum . (map euler) . mkList
ソースコード全体は以下のとおりです。
私の理解
ドット演算子は、2つの関数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