data Atree = Number Int | Variable String | Plus Atree Atree | Minus Atree | Times Atree Atree t :: Atree t = Times (Plus (Number 5) (Minus (Variable "x"))) ( Plus (Times (Number 2) (Variable "y")) (Minus (Plus (Variable "x") (Number 7))) ) type Polynomial = [Monomial] type Monomial = (Int, [String]) polynomial :: Atree -> Polynomial polynomial = undefined