From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- 1415/files/practicum/RefactorXX.dcl | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 1415/files/practicum/RefactorXX.dcl (limited to '1415/files/practicum/RefactorXX.dcl') diff --git a/1415/files/practicum/RefactorXX.dcl b/1415/files/practicum/RefactorXX.dcl new file mode 100644 index 0000000..4b7748f --- /dev/null +++ b/1415/files/practicum/RefactorXX.dcl @@ -0,0 +1,26 @@ +definition module RefactorXX + +:: Expr = NR Int + | VAR Name + | OP Expr Operator Expr + | LET Name Expr Expr +:: Name :== String +:: Operator = PLUS | MIN | MUL | DIV +:: Val a = Result a | Undef + +class fail c :: c a +class return c :: a -> c a +class (>>=) infix 0 c :: (c a) (a -> c b) -> c b +class Monad c | return, >>= c +class MonadFail c | Monad, fail c + +instance fail [], Val +instance return [], Val +instance >>= [], Val + +from StdClass import class toString + +instance toString Expr +free :: Expr -> [Name] +remove_unused_lets :: Expr -> Expr +eval :: Expr -> c Int | MonadFail c -- cgit v1.2.3