I'm the author of the Clojure->Scheme compiler. I'm looking into the possibility making the compiler not require the JVM for macro-expansion.

Clojure makes use of vectors and maps directly as syntax -- I was looking into using Gambit's bracket-keyword to produce literal vectors from the reader, but it seems the reader just attaches a symbol to the head of a list, as opposed to evaluating the forms.

I'd like the macro-expansion stage to have access to the actual maps, vectors etc. as some Clojure macros behave differently depending on whether the forms are lists or vectors.

Is it possible to hook into the reader this way? (Perhaps as a fallback I could just tree-walk the forms to replace instances of the vector-literal and hash-literal markers with actual vectors and maps before macro-expansion.)