foldr :: (a -> b -> b) -> b -> [a] -> b
Run Code Online (Sandbox Code Playgroud)
需要注意的是a -> b -> b是a -> (b -> b).函数b -> b在组合下形成一个幺半群.
请注意这是如何相似的
foldMap :: (..omitted..) => (a -> m) -> f a -> m
Run Code Online (Sandbox Code Playgroud)
唯一的区别是,foldMap不使用类型的"零"的说法b的fold,并返回一个m,这方面的foldr会b->b.现在只需将一个应用到另一个,你就可以foldr从中恢复过来foldMap.