foldl :: (a -> b -> a) -> a -> [b] -> a
foldl step zero (x:xs) = foldl step (step zero x) xs
foldl _ zero [] = zero
(a-> b-> a )がなぜaを返すのか、また(a-> b-> a)-> a->[b]->aがaを返すのかよくわかりません。(a-> b-> c)-> a->[b]-> cのようになります。以下の例に基づいて誰かが私にそれを説明できますか?ありがとう!
foldl (+) 0 (1:2:3:[])
foldl (+) (0 + 1) (2:3:[])
foldl (+) ((0 + 1) + 2) (3:[])
foldl (+) (((0 + 1) + 2) + 3) ([])
foldl (+) (((0 + 1) + 2) + 3)