[Openmcl-devel] Compiler warnings
joswig at lisp.de
Mon Oct 19 22:50:48 UTC 2009
Am 18.10.2009 um 19:45 schrieb Tim Bradshaw:
> 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.
I always found that highly annoying.
The CMUCL FAQ has already been mentioned. Just to make it clear,
fortunately there is a switch for CMUCL to get rid of this:
* (describe 'ext:*top-level-auto-declare*)
*TOP-LEVEL-AUTO-DECLARE* is an external symbol in the EXTENSIONS
It is a special variable; its value is :WARN.
WARN is an external symbol in the KEYWORD package.
It is a constant; its value is :WARN.
This variable controls whether assignments to unknown variables at
(or in any other call to EVAL of SETQ) will implicitly declare the
SPECIAL. These values are meaningful:
:WARN -- Print a warning, but declare the variable special (the
T -- Quietly declare the variable special.
NIL -- Never declare the variable, giving warnings on each use.
Whenever I use CMUCL and get annoyed with this, I'll set this variable
in the CMUCL init file.
back to CCL...
> So it's a good thing it does not do this in CCL.
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
Rainer Joswig, Hamburg, Germany
mailto:joswig at lisp.de
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Openmcl-devel