X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=expr%2Fexist%2Fwhile.icl;fp=expr%2Fexist%2Fwhile.icl;h=0000000000000000000000000000000000000000;hb=4b62b5d397d86147e393c05b3083af74a3a0c4af;hp=72430fc6d9dd61a0a5eae3503c6b2602dcced87a;hpb=e5305ee9d4290e1aa803a2e62a14f32e5cd29782;p=clean-tests.git diff --git a/expr/exist/while.icl b/expr/exist/while.icl deleted file mode 100644 index 72430fc..0000000 --- a/expr/exist/while.icl +++ /dev/null @@ -1,62 +0,0 @@ -implementation module while - -import StdEnv - -:: Gamma :== String -> Int -instance gamma Gamma -where - put g i v = \i`->if (i == i`) v (g i) - get g v = g v - -emptyGamma :: Gamma -emptyGamma = abort "Undefined variable" - -instance eval WhileExpr -where - eval (i =. v) = \g->put g i (evali v g) - eval (If b _ t _ e) = \g->if (evalb b g) (eval t g) (eval e g) - eval (a :. b) = eval b o eval a - eval x=:(While b _ e) = \g->if (evalb b g) (eval (e :. x) g) g - eval Skip = id - eval (WExpr e) = eval e - -instance evali WhileInt -where - evali (Int i) = const i - evali (Var s) = flip get s - evali (a +. b) = \g->evali a g + evali b g - evali (WInt e) = evali e - -instance evalb WhileBool -where - evalb (Bool b) = const b - evalb (a ==. b) = \g->evali a g == evali b g - evalb (a &. b) = \g->evalb a g && evalb b g - evalb (Not a) = not o evalb a - evalb (WBool e) = evalb e - -instance print WhileExpr -where - print (i =. v) = i +++ " := " +++ print v - print (If b _ t _ e) = "If " +++ print b +++ " then " +++ print t +++ " else " +++ print e - print (a :. b) = print a +++ "; " +++ print b - print x=:(While b _ e) = "While " +++ print b +++ " do " +++ print e - print Skip = "Skip" - print (WExpr e) = print e - -instance print WhileInt -where - print (Int i) = toString i - print (Var s) = s - print (a +. b) = print a +++ " + " +++ print b - print (WInt e) = print e - -instance print WhileBool -where - print (Bool b) = toString b - print (a ==. b) = print a +++ " = " +++ print b - print (a &. b) = print a +++ " && " +++ print b - print (Not a) = "!" +++ print a - print (WBool e) = print e - -Start = (eval ("a" =. Int 42 :. While (Bool False) Do ("b" =. Int 4)) emptyGamma) "a"