<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body text="#000000" bgcolor="#ffffff">
<br>
<br>
Gary Byers wrote:
<blockquote type="cite" cite="mid:alpine.BSF.2.00.0910211834160.18838@abq.clozure.com">
<pre wrap="">
On Mon, 19 Oct 2009, Tobias C. Rittweiler wrote:
</pre>
<blockquote type="cite">
<pre wrap="">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
</pre>
</blockquote>
<pre wrap=""><!---->
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.
</pre>
</blockquote>
+1<br>
<br>
</body>
</html>