[Openmcl-devel] Compiler warnings
    Ron Garret 
    ron at flownet.com
       
    Sat Oct 17 22:56:55 PDT 2009
    
    
  
On Oct 17, 2009, at 10:24 PM, Taoufik Dachraoui wrote:
> I compared openmcl and cmucl and found that openmcl setf create a  
> lexical variable
Not quite.  OpenMCL (which is now called CCL) simply binds the value  
in the global environment without making the variable either lexical  
or dynamic.  You can still bind it both ways:
? (setf x 1)
1
? (defun foo () x)
;Compiler warnings :
;   In FOO: Undeclared free variable X
FOO
? (let ((x 2)) (foo))
;Compiler warnings :
;   In an anonymous lambda form: Unused lexical variable X
1
? (let ((x 2)) (declare (special x)) (foo))
2
It's very confusing, which is one reason I occasionally advocate  
against CL's design for global variables.  You might want to look at  
this:
http://rondam.blogspot.com/2009/08/global-variables-done-right.html
rg
    
    
More information about the Openmcl-devel
mailing list