Foldr / Foldl kostenlos, wenn Tree Foldable Foldmap implementiert?

Ich bin Anfänger bei einem Haskell und lerne von "Learn You a Haskell". Ich verstehe etwas nicht über die Tree-Implementierung von 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  

Zitat aus: LYOH: "Wenn wir foldMap also nur für einen Typ implementieren, erhalten wirFoldr und Foldl auf diesen Typ kostenlos! "

Kann das jemand erklären? Ich verstehe nicht warum und wie ich jetzt kostenlos foldr und foldl bekomme.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage