From ddcb9439a958ad7721c9dc20e4267194a385c73c Mon Sep 17 00:00:00 2001 From: Kazu Yamamoto Date: Mon, 24 May 2010 15:38:37 +0900 Subject: [PATCH] simplify eval. --- Eval.hs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Eval.hs b/Eval.hs index fda10d1..c35474d 100644 --- a/Eval.hs +++ b/Eval.hs @@ -12,22 +12,18 @@ evaluate exp0 = eval exp0 empty eval :: Exp -> Stack Exp -> Exp eval (exp1 :. exp2) stack = eval exp1 $ push exp2 stack -eval exp1 stack = exec stack exp1 - -exec :: Stack Exp -> Exp -> Exp -exec stack0 exp1 - | isEmpty stack0 = exp1 -exec stack0 exp1@(Var _) = foldl (:.) exp1 $ map evaluate stack0 -exec stack0 S = eval (x :. z :. (y :. z)) stack3 +eval exp1 stack + | isEmpty stack = exp1 +eval exp1@(Var _) stack = foldl (:.) exp1 $ map evaluate stack +eval S stack = eval (x :. z :. (y :. z)) stack3 where - (x,stack1) = pop stack0 + (x,stack1) = pop stack (y,stack2) = pop stack1 (z,stack3) = pop stack2 -exec stack0 K = eval x stack2 +eval K stack = eval x stack2 where - (x,stack1) = pop stack0 + (x,stack1) = pop stack (_,stack2) = pop stack1 -exec stack0 exp0@(_ :. _) = eval exp0 stack0 ----------------------------------------------------------------