Is ES3 good enough? Was incrementally strengthening ES3 paradigms considered?

Dave Herman dherman at
Tue Nov 13 11:04:42 PST 2007

> Could the Scheme aspect of ES be strengthened? Tail recursion and let
> statements seem like good additions. What about macros? Please!

I can speak to the topic of macros. The group has been open to the 
possibility of macros for a future version of ES, but not Edition 4. 
There are not very many languages with non-Lisp syntax that have come 
close to the power of Lisp/Scheme macros. CPP is distinctly *not* an 
inspiration! :) Dylan may provide some inspiration, and possibly Boo and 
Nemerle, though I have to learn more about these languages.

JavaScript's complicated syntax makes macros very tricky. Contrary to 
the popular view that parsing is a wholly solved problem in CS, moving 
Lisp-style macros out of the domain of S-expressions and into 
token-based syntaxes is far trickier than you might first suspect.

Hygiene is another important desideratum; scaling up C macros to be 
closer to the power of Lisp macros means dealing with the kinds of bugs 
that arise from name clashes[*]. Automatically hygienic systems 
generally "do the right thing" but there are a number of different 
algorithms to choose from, and as Brendan says the last word about 
hygiene has not been written (this is in fact the topic of my 
dissertation work). However, the theory doesn't have to be set in stone 
for the practice to proceed, and there are plenty of excellent, working 
Scheme implementations with fantastic macro systems that have been 
around for many years. There's lots of good inspiration to draw from.

So the short answer to your question is: maybe, but not yet. :)


[*] These problems don't arise in standard C, but with e.g. the GCC 
extensions to CPP you can easily cause these kinds of name capture.

More information about the Es4-discuss mailing list