lisp 变量的作用域

lisp  的变量 作用域是 lexical scoping 的


我们看看下面的代码:

CL-USER> (setf c 'global-c)

; in: SETF C
;     (SETF C 'GLOBAL-C)
; ==>
;   (SETQ C 'GLOBAL-C)
;
; caught WARNING:
;   undefined variable: C
;
; compilation unit finished
;   Undefined variable:
;     C
;   caught 1 WARNING condition
GLOBAL-C
CL-USER> (defvar *d* 'global-d)
*D*
CL-USER> (defun fn() *b*)
STYLE-WARNING: redefining COMMON-LISP-USER::FN in DEFUN
FN
CL-USER> fn
; Evaluation aborted on #.
CL-USER> (fn
      )
GLOBAL-B
CL-USER> (let (( c 'local-c)
           (*d* 'local-d))
       (list c *d* (fn) (symbol-value 'c) (symbol-value '*d*)))
(LOCAL-C LOCAL-D GLOBAL-B GLOBAL-C LOCAL-D)
CL-USER>

看结果不解释

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-764845/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/133735/viewspace-764845/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值