1 definition module RefactorXX
5 | OP Expr Operator Expr
8 :: Operator = PLUS | MIN | MUL | DIV
9 :: Val a = Result a | Undef
12 class return c :: a -> c a
13 class (>>=) infix 0 c :: (c a) (a -> c b) -> c b
14 class Monad c | return, >>= c
15 class MonadFail c | Monad, fail c
18 instance return [], Val
21 from StdClass import class toString
23 instance toString Expr
24 free :: Expr -> [Name]
25 remove_unused_lets :: Expr -> Expr
26 eval :: Expr -> c Int | MonadFail c