Fold Right (foldr)
foldr :: (a -> b -> b) -> b -> [a] -> b
foldr f v [] = v
foldr f v (x:xs) = f x (foldr f v xs)sum :: Num a => [a] -> a
sum xs = foldr (+) 0 xssum [1, 2, 3]
1 + (foldr (+) 0 [2, 3])
1 + (2 + (foldr (+) 0 [3]))
1 + (2 + (3 + (foldr (+) 0 [])))
1 + (2 + (3 + 0))
6[1, 2, 3]
1 : (2 : (3 : [])) -- list construction
1 + (2 + (3 + 0)) -- foldr (+)product :: Num a => [a] -> a
product = foldr (*) 1Last updated