Source of Nothingness - 2007-03-29 (昼)

* 2007-03-29 (昼)

; 普通の状況
(progn
  (setq x 1)
  (defun f() x)
  ((lambda (x) (f)) 2))
=>1

; スペシャル変数に昇格
(progn
  (setq x 1)
  (defun f() x)
  ((lambda (x) (declare (special x)) (f)) 2))
=>2

; 束縛を解消
(progn
  (setq x 1)
  (defun f() x)
  ((lambda (x) (declare (special x)) (makunbound 'x) (f)) 2))
->変数が定義されていません: x

; 束縛を解消その二
(progn
  (setq x 1)
  (defun f() x)
  (defun g() (makunbound 'x) (f))
  ((lambda (x) (declare (special x)) (g)) 2))
->変数が定義されていません: x

update : 2007-03-29 (Thu) 12:45:49