foldr :: (a -> b -> b) -> b -> [a] -> b foldr (-) 0 [1,2,3] = 2
foldl :: (b -> a -> b) -> b -> [a] -> b foldl (-) 0 [1,2,3] = -6
reduce :: (a -> a -> a) -> [a] -> a foldb :: (a -> b) -> (b -> b -> b) -> [a] -> b