Patterns can be nested to an arbitrary depth. Lets sum up a list of trees:
treeSizeL :: [Tree a] -> Integer treeSizeL [] = 0 treeSizeL ((Branch b1 b2):t) = (treeSize b1 + treeSize b2) + treeSizeL t treeSizeL ((Leaf l):t) = 1 + treeSizeL t treeSizeL (_:t) = treeSizeL t