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 #<UNBOUND-VARIABLE FN {2566C639}>.
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> 
看结果不解释
    
     babyyellow
posted on 2013-07-18 09:09 babyyellow 阅读(362) 评论(0) 收藏 举报
                    
                
                
            
        
浙公网安备 33010602011771号