タグ: sicp

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

問題4.21 λ式だけを使って再帰をしている問題のコードを見て、以前読んだYコンビネータの記事(Y Combinatorを直感的に理解。しようと試みる。 – 医者を志す妻を応援する夫の日記、Y コンビネータって何? – IT戦記)を思い出した。 脚注にはY演算子(Y operator)と書かれていて、何か関係があるのかと思ったら、Yコンビネータの日本語訳は "不動…続きを読む

問題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) (…続きを読む