<div>(MACROLET ((%M (Z)</div><div> Z))</div><div> (CTYPECASE (EXPAND-IN-CURRENT-ENV (%M :FOO))</div><div> (INTEGER :BAD1)</div><div> (KEYWORD :GOOD)</div><div> (SYMBOL :BAD2)))</div>
<div><br></div><div>What is this supposed to check? In ECL this leads to the following code</div><div><br></div><div><div>(CTYPECASE :FOO</div><div> (INTEGER :BAD1)</div><div> (KEYWORD :GOOD)</div><div>
(SYMBOL :BAD2)))</div>
</div><div><br></div><div>This is in my opinion wrong.. CTYPECASE is supposed to contain a form for a correctable error, including a replacement of the value of the form, in this case :FOO. This means CTYPECASE expands at some point to (SETF :FOO ...) which is not a valid code, given that :FOO is a constant.</div>
<div><br></div><div>I know that SBCL and probably other implementations do not complain about this until the assignment is performed, but this does not mean that the code is valid.</div><div><br></div><div>Juanjo</div><div>
<br></div>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>