--- /dev/null
+import "Prelude"\r
+\r
+data Exp = Exp String\r
+\r
+expToString :: Exp -> String\r
+expToString (Exp s) = s\r
+\r
+instance Additive Exp where\r
+ zero = Exp "0"\r
+ Exp a + Exp b = Exp ("(" + a + " + " + b + ")")\r
+\r
+instance Ring Exp where\r
+ one = Exp "1"\r
+ neg (Exp a) = Exp ("(-" + a + ")")\r
+ Exp a * Exp b = Exp ("(" + a + " * " + b + ")")\r
+ Exp a - Exp b = Exp ("(" + a + " - " + b + ")")\r
+ fromInteger x = Exp (show x)\r
+ \r
+a = Exp "a"\r
+b = Exp "b"\r
+c = Exp "c"\r
+d = Exp "d"\r
+e = Exp "e"\r
+\r
+main = expToString (a + b*c + d*e)\r
+--\r
+((a + (b * c)) + (d * e))
\ No newline at end of file