data Expression = Constant Integer | Plus Expression Expression | Times Expression Expression evaluate :: Expression -> Integer evaluate e = case e of ... instance Show Expression where show e = case e of ...