e71f36b2eb0e3d6171e4f18405f2380737fcf5a7
[fp1415.git] / fp2 / week45 / mart / RefactorX.dcl
1 definition module RefactorX
2
3 import StdEnv
4
5 :: Expr = NR Int | VAR Name | OP Expr Operator Expr | LET Name Expr Expr
6 :: Name :== String
7 :: Operator = PLUS | MIN | MUL | DIV
8 :: Val = Result Int | Undef
9
10 from StdClass import class toString
11
12 instance toString Expr
13 free :: Expr -> [Name]
14 remove_unused_lets :: Expr -> Expr
15 eval :: Expr -> Val