Code Review
Compare your solutions
#| BEGIN (Write your solution here) |#
(define (let->combination exp)
(let ((name (let-name exp)))
(if (null? name)
(cons (make-lambda (let-vars exp) (let-body exp))
(let-exps exp))
(cons 'begin
(list (cons 'define
(cons (cons (let-name exp) (let-vars exp))
(let-body exp)))
(cons (let-name exp) (let-exps exp)))))))
(define (make-define name val)
(cons 'define (cons name val)))
(define (named-let? exp)
(not( null? (cdddr exp))))
(define (let-name exp)
(if (named-let? exp)
(cadr exp)
'()))
(define (let-vars exp)
(if (named-let? exp)
(map car (caddr exp))
(map car (cadr exp))))
(define (let-exps exp)
(if (named-let? exp)
(map cadr (caddr exp))
(map cadr (cadr exp))))
(define (let-body exp)
(if (named-let? exp)
(cdddr exp)
(cddr exp)))
#| END |#