foldr2 :: (a -> b -> b) -> b -> [a] -> b foldr2 _ b [] = b foldr2 fabb b (a : as') = fabb a (foldr2 fabb b as')