From 6b0dbdff6bb23ccdf5ce7cbae9a6cf2da206cc29 Mon Sep 17 00:00:00 2001 From: Felix Martin Date: Mon, 18 Jan 2021 08:48:59 -0500 Subject: [PATCH] Improve 4.8 --- ex-4_01-xx.scm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ex-4_01-xx.scm b/ex-4_01-xx.scm index 890c6db..ce11716 100644 --- a/ex-4_01-xx.scm +++ b/ex-4_01-xx.scm @@ -197,19 +197,20 @@ ((named-let? exp) (let ((let-name (named-let-var exp)) (let-variables (named-let-vars exp)) - (let-expressions (named-let-exps exp))) - (cons - (list 'define - (cons let-name let-variables) - (cons 'begin (named-let-body exp))) - let-expressions))) + (let-expressions (named-let-exps exp)) + (let-body (named-let-body exp))) + (list + 'let + (cons (list let-name (make-lambda let-variables let-body)) + (named-let-bindings exp)) + (sequence->exp let-body)))) (else (error "Unsupported let expression -- LET->COMBINATION")))) (assert (let->combination '(let ((a 3) (b 4)) (* 3 a b))) '((lambda (a b) (* 3 a b)) 3 4)) -(assert (let->combination '(let fib-iter ((a 1)) (fib-iter (+ a 1)))) - '((define (fib-iter a) (begin (fib-iter (+ a 1)))) 1)) +(assert (let->combination '(let fib-iter ((a 1)) (fib-iter (+ a 1)) 3)) + '(let ((fib-iter (lambda (a) (fib-iter (+ a 1)) 3)) (a 1)) (begin (fib-iter (+ a 1)) 3))) (display "\nex-4.9 - iteration-constructs\n")