把defun 换成defun-q可能看得更清楚
譬如下面的这段, - (defun A nil
- (eval
- (list 'DEFUN-q
- 'a
- 'nil
- (setq i 0)
- (repeat 10000 (setq i (1+ i)))
- (princ i)
- )
- )
- (a)
- )
$ A
#<USUBR @00000000598ead18 A>
_$ (a)
1000010000
_$ a
(nil 0 10000 10000)
_$
第一次加载函数的时候 ,A是一个函数, 然后 函数执行一次之后 , a函数就变成了变了。
最后的返回值是10000 而不是princ
|