Improve 4.8

main
Felix Martin 2021-01-18 08:48:59 -05:00
parent 23a8766b45
commit 6b0dbdff6b
1 changed files with 9 additions and 8 deletions

View File

@ -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")