Я новичок в Haskell и учусь на "Learn You a Haskell".
Есть кое-что, чего я не понимаю в реализации Tree
Foldable
.
instance F.Foldable Tree where
foldMap f Empty = mempty
foldMap f (Node x l r) = F.foldMap f l 'mappend'
f x 'mappend'
F.foldMap f r
Цитата из LYAH: "Так что, если мы просто реализуем foldMap
для некоторого типа, мы получим foldr
и foldl
для этого типа бесплатно !".
Может кто-нибудь объяснить это? Я не понимаю, как и почему я получаю foldr
и foldl
бесплатно прямо сейчас...