[Openmcl-devel] local special on symbol-macro

Daniel Weinreb dlw at itasoftware.com
Thu Oct 22 11:10:43 PDT 2009



Gary Byers wrote:
> On Mon, 19 Oct 2009, Tobias C. Rittweiler wrote:
>
>   
>> I think the following
>>
>>  (let ((x :special))
>>    (declare (special x))
>>    (symbol-macrolet ((x :symbol-macro))
>>      (values x (locally (declare (special x)) x))))
>>
>> should return
>>
>>  :SYMBOL-MACRO, :SPECIAL
>>
>> It currently returns
>>
>>  :SYMBOL-MACRO, :SYMBOL-MACRO
>>     
>
> Section 3.1.2.1.1 (everyone's favorite section !) uses some
> unfortunate language which seems to suggest that symbol-macro
> definitions aren't subject to shadowing - "... if there is a binding of
> the symbol as a symbol-macro ..." rather than something like "... if
> there is an unshadowed binding ..." -  but the dictionary entry for
> SYMBOL-MACROLET explictly discusses the notion that bindings established
> by SYMBOL-MACROLET are indeed subject to shadowing amd are visible whenever
> lexical bindings of the symbol would be visible (e.g., not visible in cases
> like your example).  That seeming contradiction leaves a little bit of
> somewhat reasonable doubt as to what the spec actually says, but I think
> that I agree with you based on a preponderance of evidence.
>   
+1

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20091022/96cfc4f9/attachment.htm>


More information about the Openmcl-devel mailing list