[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