From 80fb79b0012d48f209426909c8e3d80a65a539f1 Mon Sep 17 00:00:00 2001 From: Felix Martin Date: Tue, 6 Apr 2021 22:11:18 -0400 Subject: [PATCH] Start to work on 5.25 and finish syntax error in eceval --- ex-5_23-xx.scm | 13 ++++++++++++- misc/sicp-eceval.scm | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ex-5_23-xx.scm b/ex-5_23-xx.scm index 7aa8b3a..afd15f1 100644 --- a/ex-5_23-xx.scm +++ b/ex-5_23-xx.scm @@ -39,5 +39,16 @@ (assert (get-register-contents eceval 'val) 10) -(display "\nex-5.25\n") +(display "\nex-5.25 - lazy-evaluation\n") + +(set-register-contents! eceval 'exp + '(begin + (define (try a b) + (if (= a 0) 1 b)) + (try 0 (/ 1 1)))) +(start eceval) +(assert (get-register-contents eceval 'val) 1) + + +(display "\nex-5.26\n") diff --git a/misc/sicp-eceval.scm b/misc/sicp-eceval.scm index 0a62595..b3126e1 100644 --- a/misc/sicp-eceval.scm +++ b/misc/sicp-eceval.scm @@ -68,7 +68,7 @@ (list 'define-variable! define-variable!) (list 'empty-arglist empty-arglist) (list 'extend-environment extend-environment) - (list 'get-global-environment get-global-environment)) + (list 'get-global-environment get-global-environment) (list 'last-operand? last-operand?) (list 'lookup-variable-value lookup-variable-value) (list 'make-procedure make-procedure) @@ -92,7 +92,7 @@ (list 'cond? cond?) (list 'let->combination let->combination) (list 'let? let?) - ) + )) (define eceval (make-machine