data Tree a = Leaf a | Branch (Tree a) (Tree a) instance Functor Tree where fmap fab (Leaf a) = Leaf (fab a) fmap fab (Branch tr' tr_a) = Branch (fmap fab tr') (fmap fab tr_a)