Merge pull request #559 from ploeh/patch-2
authorMark Seemann <mark@ploeh.dk>
Wed, 22 Aug 2018 14:50:58 +0000 (16:50 +0200)
committerDavid Feuer <David.Feuer@gmail.com>
Wed, 22 Aug 2018 14:50:58 +0000 (10:50 -0400)
Add examples for foldTree

Data/Tree.hs

index 3f3a1bb..fefdfd3 100644 (file)
@@ -313,6 +313,18 @@ levels t =
 --
 -- > foldTree (\x xs -> maximum (x:xs)) (Node 1 [Node 2 [], Node 3 []]) == 3
 --
+-- Count the number of leaves in the tree:
+--
+-- > foldTree (\_ xs -> if null xs then 1 else sum xs) (Node 1 [Node 2 [], Node 3 []]) == 2
+--
+-- Find depth of the tree; i.e. the number of branches from the root of the tree to the furthest leaf:
+--
+-- > foldTree (\_ xs -> if null xs then 0 else 1 + maximum xs) (Node 1 [Node 2[], Node 3 []]) == 1
+--
+-- You can even implement traverse using foldTree:
+--
+-- > traverse' f = foldTree (\x xs -> liftA2 Node (f x) (sequenceA xs))
+--
 --
 -- @since 0.5.8
 foldTree :: (a -> [b] -> b) -> Tree a -> b