On Fri, Feb 11, 2011 at 2:56 PM, Peter Bex
<address@hidden> wrote:
On Fri, Feb 11, 2011 at 02:46:58PM -0500, Patrick Li wrote:
>
> The "when" should not be macroexpanded because it is a local binding
> introduced by the let form. In that context, it is actually *not* a macro.
>
> Does anyone know which forms introduce new bindings? How can I check this
> up?
I'm afraid to really do this properly you'd need to implement your own
macro-expander. You need to do all sorts of bookkeeping to get your
syntactic environments straight. The macro-expander needs to know about
core forms like LET and extend the environment accordingly when those are
used. See expand.scm in Chicken core (hairy!), or alexpander in the
Chicken 3 egg repo (cleaner, but still rather tricky) for an example of
such things.
Cheers,
Peter
--
http://sjamaan.ath.cx
--
"The process of preparing programs for a digital computer
is especially attractive, not only because it can be economically
and scientifically rewarding, but also because it can be an aesthetic
experience much like composing poetry or music."
-- Donald Knuth