-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathderivingShow.hs
More file actions
26 lines (21 loc) · 831 Bytes
/
derivingShow.hs
File metadata and controls
26 lines (21 loc) · 831 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
data Operator = Plus | Minus | Times | Div
data Tree = SumNode Operator Tree Tree
| ProdNode Operator Tree Tree
| AssignNode String Tree
| UnaryNode Operator Tree
| NumNode Double
| VarNode String
instance Show Operator where
show Plus = " + "
show Minus = " - "
show Times = " * "
show Div = " / "
instance Show Tree where
show (SumNode op left right) = "(" ++ show left ++ show op ++ show right ++ ")"
show (ProdNode op left right) = show left ++ show op ++ show right
show (AssignNode str left) = str ++ " = " ++ show left
show (UnaryNode op left) = show op ++ show left
show (NumNode n) = show n
show (VarNode str) = str
expr = AssignNode "x" (ProdNode Div (SumNode Minus (NumNode 13) (NumNode 1)) (VarNode "y"))
main = print expr