さかもとのブログ

つらつらと

SICP演習問題5.40

コード生成関数のすべてに翻訳時環境を追加。(コードは略)

(define (compile-lambda-body exp proc-entry compile-time-env)
  (let ((formals (lambda-parameters exp)))
    (print "compile-time-environment: "compile-time-env)
    (append-instruction-sequences
     (make-instruction-sequence
      '(env proc argl) '(env) `(,proc-entry
                                (assign env (op compiled-procedure-env) (reg proc))
                                (assign env
                                        (op extend-environment)
                                        (const ,formals)
                                        (reg argl)
                                        (reg env))))
     (compile-sequence (lambda-body exp) 'val 'return (cons formals compile-time-env)))))