[Openmcl-devel] Compiler warnings

Gary Palter palter at clozure.com
Sun Oct 18 11:12:00 PDT 2009

On Oct 18, 2009, at 1:54 PM, Taoufik Dachraoui wrote:

> On Oct 18, 2009, at 7:45 PM, Tim Bradshaw wrote:
>> On 18 Oct 2009, at 18:07, Taoufik Dachraoui wrote:
>>> n the specs it is said that there is three kinds of variables:
>>> lexical, dynamic and constant,
>>> and this is the problem, it seems that the hash on SETF creates a
>>> variable that is neither
>>> lexical, nor dynamic nor constant (as show in previous
>>> submissions); So the question
>>> is what is the rational behind this hack? why the hack did not
>>> create a dynamic variable as in CMUCL?
>> One of the most annoying things about SETF at the top-level in CMUCL
>> is that it does (or did) effectively declare the name as special.
>> That can have fairly pervasive and unfortunate side-effects.
>> So it's a good thing it does not do this in CCL.
> At the price of having a fourth kind of symbol, but this is not a big
> issue.

SETF does not create a symbol.  And there is certainly not a fourth  
type of symbol involved.

You are being confused, still, by the evaluator vs. compiler  
generating warnings.

Take the form, put it in a file and compile the file.  You'll get a  
warning that X is not declared.

[palter at Traveller ~](2)$ cat /tmp/foo.lisp
(setf x 1)
[palter at Traveller ~](3)$ dx86cl
Welcome to Clozure Common Lisp Version 1.4-dev-r13020M-trunk   
? (compile-file "/tmp/foo.lisp")
;Compiler warnings for "/tmp/foo.lisp" :
;   In an anonymous lambda form at position 0: Undeclared free  
variable X
? (load "/tmp/foo")
? x

> All this discussions could be avoided if SETF raises an error when
> trying to bind a non
> existing symbol (it is fortunate to me because I learned a little more
> of CCL now and I
> practicied my dormant english).
> Taoufik
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

More information about the Openmcl-devel mailing list