【发布时间】:2016-05-29 17:57:16
【问题描述】:
【问题讨论】:
【问题讨论】:
foldr :: (a -> b -> b) -> b -> [a] -> b
请注意,a -> b -> b 是 a -> (b -> b)。函数b -> b 在合成下形成一个幺半群。
注意它的相似之处
foldMap :: (..omitted..) => (a -> m) -> f a -> m
唯一的区别是 foldMap 不使用 fold 的 b 类型的“零”参数,而是返回一个 m,就 foldr 而言将是 b->b。现在只需将一个应用到另一个,您就已经从 foldMap 恢复了 foldr。
【讨论】: