Practice 4.20
(define (letrec->let exp)
(list 'let
(let-init-bindings exp)
(append (let-set-val exp) (letrec-body exp))))
(define (letrec-bindings exp)
(cadr exp))
(define (let-init-bindings exp)
(map (lambda (x) (list (car x) '*unassigned*)) (letrec-bindings exp)))
(define (let-set-val exp)
(map (lambda (x) (list (car x) (cadr x))) (letrec-bindings exp)))
(define (letrec-body exp)
(caddr exp))