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