On Fri, May 7, 2010 at 11:00 PM, Tobias C. Rittweiler <span dir="ltr"><<a href="mailto:tcr@freebits.de">tcr@freebits.de</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<br>
* the compiler macros for aref and aset seem to have debugging stuff<br>
  left.<br></blockquote><div><br>I know, it is waiting in my hard disk due to an interrupted commit. I will upload it when I solve the problems.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


* with-clean-symbols is broken.. source code is not necessarily a tree,<br>
  so trying to use sublis on it is not enough.<br> Isn't with-clean-symbol just with-unique-symbols?<br></blockquote></div><br>The purpose of this macro is not to be of general use. It is a simple hack that avoids using gensym / gentemp every time a macro is expanded and it does so only in the body of the macro.<br>

<br>(defmacro blah-blah (...)<br> ...<br>            (with-clean-symbols (%array-index)<br>              `(let ((%array-index ,index))<br>                 (declare (:read-only %array-index))<br>                 ,(expansion a '%array-index))))<br>

)<br><br>this rewrites the inner body replacing %array-index with an uninterned symbol making the resulting expansion hygienic or "clean" in the sense that it will never collide with user's symbols. The body is always a tree or at least the places where we want to substitute the symbols are, and again, this is just for use in the compiler where I know that there will be no circular structures and nothing complicated, not a general tool.<br>

<br>Juanjo<br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://tream.dreamhosters.com">http://tream.dreamhosters.com</a><br>