小编sai*_*ark的帖子

没有Monoid实例的折叠

我有一个简单的树结构:

data Tree a = Leaf | Node a (Tree a) (Tree a)
Run Code Online (Sandbox Code Playgroud)

还有一个可折叠的实现:

import qualified Data.Foldable as F

instance F.Foldable Tree where
  foldMap f Leaf         = mempty
  foldMap f (Node x l r) = F.foldMap f l `mappend`
                           f x           `mappend`
                           F.foldMap f r
Run Code Online (Sandbox Code Playgroud)

和它的作品,即使有对没有实现Monoid,我不能既不使用mappend也不mempty在我的代码.那么这个Foldable实现如何工作?

tree haskell monoids

8
推荐指数
1
解决办法
584
查看次数

标签 统计

haskell ×1

monoids ×1

tree ×1