chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Implementing a macroexpand-all


From: Peter Bex
Subject: Re: [Chicken-users] Implementing a macroexpand-all
Date: Fri, 11 Feb 2011 20:56:05 +0100
User-agent: Mutt/1.4.2.3i

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]