月: 2009年5月

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

問題4.17 フレームの生成を確認するために、手続き make-frame にリーダマクロを付けて読み出してみる。 (define (make-frame variables values) #?=(cons variables values)) 手続き scan-out-defines を使って、定義を逐次的に解釈した場合と内部定義を掃き出した場合とを比較する。 定義を逐次的に解釈した場合 ;;…続きを読む

MIT講義動画(超循環評価器)、問題4.14 – SICP(計算機プログラムの構造と解釈)その186

Lecture-7a: Metacircular Evaluator, Part 1 MIT での"超循環評価器"の講義動画。 問題4.14 Louis が基本手続きとして組み込んだ map では、第1引数の"手続き"に ‘procedure のタグが付いていないために手続きとして評価されないため。 計算機プログラムの構造と解釈 posted with am…続きを読む

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

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