Exercise 4.6. Let expressions are derived expressions, because (let (( ) ... ( )) ) is equivalent to ((lambda ( ... ) ) ) Implement a syntactic transformation let->combination that reduces evaluating let expressions to evaluating combinations of the type shown above, and add the appropriate clause to eval to handle let expressions. ———————————————————————————————————————————————————————————————————————— (define (eval exp env) (cond ... ((let? exp) (eval (let->combination exp) env)) ...)) (define (let? exp) (tagged-list? exp 'let)) (define (let-body exp) (cddr exp)) (define (let-bindings exp) (cadr exp)) (define (let->combination exp) (make-application (make-lambda (map car (let-bindings exp)) (let-body exp)) (map cadr (let-bindings exp))))