3 data Exp = Exp String
\r
5 expToString :: Exp -> String
\r
6 expToString (Exp s) = s
\r
8 instance Additive Exp where
\r
10 Exp a + Exp b = Exp ("(" + a + " + " + b + ")")
\r
12 instance Ring Exp where
\r
14 neg (Exp a) = Exp ("(-" + a + ")")
\r
15 Exp a * Exp b = Exp ("(" + a + " * " + b + ")")
\r
16 Exp a - Exp b = Exp ("(" + a + " - " + b + ")")
\r
17 fromInteger x = Exp (show x)
\r
25 main = expToString (a + b*c + d*e)
\r
27 ((a + (b * c)) + (d * e))