definition module RefactorX import StdEnv :: Expr = NR Int | VAR Name | OP Expr Operator Expr | LET Name Expr Expr :: Name :== String :: Operator = PLUS | MIN | MUL | DIV :: Val = Result Int | Undef from StdClass import class toString instance toString Expr free :: Expr -> [Name] remove_unused_lets :: Expr -> Expr eval :: Expr -> Val