data Tree a = Leaf a | Branch (Tree a) (Tree a) unit :: a -> Tree a unit = Leaf join :: Tree (Tree a) -> Tree a join (Leaf a) = a join (Branch r s) = Branch (join r) (join s)