foldr :: (a -> b -> b) -> b -> [a] -> b
注意a -> b -> b是a -> (b -> b). 函数b -> b在组合下形成一个幺半群。
请注意这类似于
foldMap :: (..omitted..) => (a -> m) -> f a -> m
唯一的区别是 foldMap 不使用 type bof的“零”参数fold并返回 an m,根据will foldrbe b->b。现在只需将一个应用到另一个,您就可以foldr从foldMap.