On Fri, May 7, 2010 at 11:00 PM, Tobias C. Rittweiler <tcr@freebits.de> wrote:

* the compiler macros for aref and aset seem to have debugging stuff

I know, it is waiting in my hard disk due to an interrupted commit. I will upload it when I solve the problems.
* with-clean-symbols is broken.. source code is not necessarily a tree,
 so trying to use sublis on it is not enough.
 Isn't with-clean-symbol just with-unique-symbols?

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.

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

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.


Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)