From 3a2af9fce8aa8b45c0e5bd9774cff980dd5ed6f2 Mon Sep 17 00:00:00 2001 From: Jim Pryor Date: Thu, 25 Nov 2010 11:37:43 -0500 Subject: [PATCH] tweak calc improvements Signed-off-by: Jim Pryor --- advanced_topics/calculator_improvements.mdwn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/advanced_topics/calculator_improvements.mdwn b/advanced_topics/calculator_improvements.mdwn index 4f24f877..cbf4c89c 100644 --- a/advanced_topics/calculator_improvements.mdwn +++ b/advanced_topics/calculator_improvements.mdwn @@ -145,9 +145,9 @@ Now our evaluation function needs two further clauses to interpret the two new e ... | Lambda(arg_var, t1) -> Closure (arg_var, t1, g) | Apply(t1, t2) -> - let value2 = eval t2 g (* we don't handle cases where t1 doesn't evaluate to a function value *) - in let Closure (arg_var, body, savedg) = eval t1 g + let Closure (arg_var, body, savedg) = eval t1 g + in let value2 = eval t2 g (* evaluate body under savedg, except with arg_var bound to value2 *) in let savedg' = (arg_var, value2) :: savedg in eval body savedg';; @@ -276,9 +276,9 @@ Since we're not permitting ourselves OCaml's ability to recursively define cycli ... | Lambda(arg_var, t1) -> Closure (arg_var, t1, g) | Apply(t1, t2) -> - let value2 = eval t2 g (* we don't handle cases where t1 doesn't evaluate to a function value *) - in let Closure (arg_var, body, savedg) = eval t1 g + let Closure (arg_var, body, savedg) = eval t1 g + in let value2 = eval t2 g (* evaluate body under savedg, except with arg_var bound to Nonrecursive value2 *) in let savedg' = (arg_var, Nonrecursive value2) :: savedg in eval body savedg' -- 2.11.0