fold
anwenden:
jeden Konstruktor d. Funktion ersetzen
data Tree a = Leaf a | Branch (Tree a) (Tree a) Leaf :: a -> Tree a Branch :: Tree a -> Tree a -> Tree a fold :: (a -> b) -> (b -> b -> b) -> Tree a -> b fold leaf branch t = case t of Leaf k -> leaf k Branch l r -> branch (fold leaf branch l) (fold leaf branch r) depth :: Tree a -> Int depth = fold ( \ k -> 0 ) ( \ x y -> 1 + max x y )