カテゴリー: blog

問題4.13 – SICP(計算機プログラムの構造と解釈)その185

問題4.13 束縛の除去は環境の最初のフレームだけでよい。 現在のフレーム以外の束縛も削除してしまうと、手続き中などのスコープ内の束縛も削除されてしまう。 束縛の削除はフレーム内で見つかった変数とその値の先頭リストの参照先を変更させて行う。 (define (eval exp env) (cond ((self-evaluating? exp) exp) ; 省略 ((unbind? exp) (…続きを読む

問題4.12 – SICP(計算機プログラムの構造と解釈)その184

問題4.12 手続き set-variable-value!、define-variable!、lookup-variable-value を見ると、共通パターンになっている手続き scan を抽象化するとよい。 scan を 変数 var が見つかった場合は見つけた変数のリストを返し、見つからなかったばあいは ‘() を返すようにする。 各手続きにおいて scan の結果に応じて処理を行わせる。…続きを読む