私は単純なツリー構造を持っています:
data Tree a = Leaf | Node a (Tree a) (Tree a)
そしてFoldableの実装:
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
そして、実装がなくても機能し、自分のコードではMonoid
どちらmappend
も使用できません。では、この実装mempty
はどのように機能するのでしょうか?Foldable