(define (make-unbound-variable! var env)
(define (env-loop env)
(define (scan prev-vars vars prev-vals vals)
(cond ((null? vars)
(env-loop (enclosing-envrionment env)))
((eq? var (car vars))
(set-cdr! prev-vars (cdr vars))
(set-cdr! prev-vals (cdr vals)))
(else (scan (cdr prev-vars) (cdr vars)
(cdr prev-vals) (cdr vals)))))
(if (eq? env the-empty-environment)
(error "Unbound variable. -- MAKE_UNBOUND_VARIABLE! " var)
(let ((frame (first-frame env)))
(if (eq? var (car (frame-variables frame)))
(begin
(set-car! frame (cdr (frame-variables frame)))
(set-cdr! frame (cdr (frame-values frame))))
(scan (frame-variables frame) (cdr (frame-variables frame))
(frame-values frame) (cdr (frame-values frame)))))))
(env-loop env))