* 2007-03-27
- 「On Lisp」確保
- 赤塚さんのxyzzyの説明がなくなってるなぁ
- abbrev, インデント, コンパイルはいりそうな気がする
- 「変数の種類」という観点からの説明だから、個々の状況の説明まではしなかったんだよなぁ
- ダイナミックスコープってそういうものというか、環境を超える効果を持っているのがスペシャル変数というイメージですね>「スペシャルであるかどうかということは環境の古いものから引き継ぐ」
; トップレベル (setq x 1) ; 実験用関数 (defun f() x) ; lexicalな束縛 ((lambda (x) (f)) 2) => 1 ; (declare (special x)) によって、この環境ではxがスペシャル変数に昇格 ((lambda (x) (declare (special x)) (f)) 2) => 2 ; また新しい環境なので通常のlexicalな束縛 ((lambda (x) (f)) 2) => 1
- こんな説明でどうでしょう
- この状況のポイントは「(declare (special ...))の効果は環境内のみの一時的なもの」という事だと思う。効果が環境内のみの一時的なものだからこそ(declare (special ...))は環境の頭の方と記述する場所が決まっていて、環境の途中で変化するなんてことがない。
update : 2007-03-28 (Wed) 03:37:32