Hi,
On Monday 26 March 2012 at 18:10, Alex Queiroz wrote:
On Mon, Mar 26, 2012 at 6:01 PM, Marijn <hkBst@gentoo.org (mailto:hkBst@gentoo.org)> wrote:
I would be interested in knowing how this proposal compares with implementing a low-level hygienic macro system such as syntactic closures or explicit renaming macros. Actually now that I said that this proposal sounds very much like a (partial?) implementation of explicit renaming macros on top of the defmacro system. Doesn't the paper you referenced mention something like that as well?
I would rather have syntactic closures as well.
Syntactic closures are much more complex, both conceptually and in practise to implement. The purpose of the designed outlined in this proposal is to not require to augment the language with a highly complex new identifier type that is distinct from symbols.
With this proposal, no new data type is required. You can write macros that only accept pure s-expressions (as they are parsed) as input, and only return pure s-expressions (that are pretty-printable without losing information, so it's easy to understand exactly what the return value means)
The paper contribution seems to be focused on the fact that it's possible to write hygienic macros on top of unhygienic macros and symbol macros, which is what Common Lisp has. Besides it says that a code walker is not needed, but that is not a necessity if the macro system would be integrated in Gambit.
It is true that the paper is written in that context. I believe its ideas are more broadly applicable than what the paper describes.
Cheers,
Per