foldr :: (a -> b -> b) -> b -> [a] -> b
foldr f acc [] = acc
foldr f acc (x : xs) = f x (foldr f acc xs)
, , foldr , f. Haskell , foldr . f ( x, , ), foldr call " ", .
foldl :: (b -> a -> b) -> b -> [a] -> b
foldl f acc [] = acc
foldl f acc (x : xs) = foldl (f acc x) xs
( ) foldl , f . f , ; foldl , , , .
, , foldr ; , , (acc). , GHCi:
Prelude> foldr (\x acc -> if x > 10 then "..." else show x ++ ", " ++ acc) "STOP" [1..5]
"1, 2, 3, 4, 5, STOP"
Prelude> foldr (\x acc -> if x > 10 then "..." else show x ++ ", " ++ acc) "STOP" [1..]
"1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..."
foldr if x , ( acc ).
, , . , foldr , foldr , , , :
Prelude> take 10 $ foldr (\x acc -> x + 100 : acc) [] [1..]
[101,102,103,104,105,106,107,108,109,110]
foldr , map, 100 , , take 10 10 . , " " :.
( ) foldl, , foldl, , "" ; foldl , -, foldl. , , foldl, , foldl , , foldr.
( ); , foldl , foldr, , , .