Implementing a Foldable instance for a tree
The idea of traversing a tree can be generalized by implementing a Foldable
instance. Usually, folds are used on lists; for example, foldr1 (+) [1..10]
traverses a list of numbers to produce a grand sum. Similarly, we can apply foldr1 (+) tree
to find the sum of all nodes in a tree.
Getting ready
We will be folding through the following tree to obtain a sum of all node values.
How to do it...
- Import the following built-in packages:
import Data.Monoid (mempty, mappend) import qualified Data.Foldable as F import Data.Foldable (Foldable, foldMap)
- The tree from
Data.Tree
already implementsFoldable
, so we will define ...
Get Haskell Data Analysis Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.