;; environment.lq (define (environment-all-names env) (let ((parent (environment-parent env))) (if parent (unique (append (environment-names env) (environment-all-names parent)) equal?) (environment-names env)))) (define (environment-set! env name value) (let ((z (environment-lookup env name))) (if z (let# (penv old-value) z (environment-bind! penv name value)) (error "environment-set!: name does not exist"))))