> module Tree where

> data Tree a b
>  = Plus  a a 
>  | Times a a 
>  | Minus a a 
>  | Pars  a 
>  | Const b
>    deriving (Show)

Note: 
 + we need a construct for the location of parentheses
 + sometimes it is useful to keep this information anyway -- eg ghc's 
     implementation of customisable prec & assoc.
 + I've left Trees polymorphic in the "branch" type - this supports labelling
     the forest with Int-based trees then switching to Tree-based trees later
 + But this might require some non-Haskell-98 flags for the related class
     instances.