[Openmcl-devel] Compiler warnings

Ron Garret ron at flownet.com
Mon Oct 19 22:51:18 PDT 2009


(cc'ing the list because this issue comes up regularly)

On Oct 19, 2009, at 6:51 PM, Waldek Hebisch wrote:

>> Yes, but it is defensible behavior in light of what the spec says,
>> namely (section 3.1.2.1.1):
>>
>> "If a form is a symbol, then it is either a symbol macro or a  
>> variable."
>>
>> and
>>
>> "If a form is a symbol that is not a symbol macro, then it is the  
>> name
>> of a variable, .... There are three kinds of variables: lexical
>> variables, dynamic variables, and constant variables."
>>
>> Since a "naked" symbol that is not bound and has not been DEF...ed is
>> clearly not a lexical variable nor a constant variable, one could
>> reasonably conclude that it must be a dynamic variable.
>>
>
> Equally well one can conclude that sybol which is not a constant,
> and been DEF...ed is not a dynamic variable so it must be lexical.
> In other words, resonable meaning of SETF is to "create" global
> lexical variable.


That would be true if CL had global lexical variables.  But it  
doesn't.  The only global lexical construct CL has (for symbols) is  
the symbol macro.

Adding global lexicals in a way that is consistent with other parts of  
the spec is not trivial.  For example, one might expect to be able to  
do this:

(setf x 1)
(symbol-value 'x) -> 1

but the spec specifically forbids this: "symbol-value cannot access  
the value of a lexical variable."

rg




More information about the Openmcl-devel mailing list