環境フレームモデル

1.1.8とかでsqrtで使用する各手続きを内部定義した場合、

(define (sqrt x)
  (define (good-enough? guess)
	(< (abs (- (square guess) x)) 0.001))
  (define (improve guess)
	(average guess (/ x guess)))
  (define (sqrt-iter guess)
	(if (good-enough? guess)
		guess
		(sqrt-iter (improve guess))))
  (sqrt-iter 1.0))

内部定義の中のxの正体は何だ?と言う話。

これは、1章だけでは理解できなくて、p.138の『評価の環境モデル』を読む必要がある。
ミソとしては、図3.11で内部定義を実際に実行する環境フレームが全てE1の下にぶら下がってできる、と言う部分。sqrt-iterやgood-enoughなどを評価する際には、E1を親としたフレームができるため、xの値をルックアップすることができる。

と言うことで、内部定義の中では、xを自由変数にしても、上位のフレームで束縛されているので、値を参照することができる。