sperber(a)informatik.uni-tuebingen.de (Michael Sperber [Mr. Preprocessor]) writes:
Clemens> What do you mean, "syntactic sugar"? Are
macros syntactic sugar?
No, but you're creating syntactic sugar around the explicit use of
MAKE-SYMBOL. You're not describing a new approach, but rather new
notation for an old approach.
My intention was neither to describe a new approach, nor to write
macros which don't use make-symbol, but to write macros which make it
easy to use hygienic variables in CL.
>> Hygiene, however, means that variables in macros obey the
same scoping
>> rules as the rest of the language. WITH-HYGIENIC-VARIABLES gives you
>> no help whatsoever referring to lexical bindings of the macro. CL
Clemens> What help do you mean?
>> macros are not hygienic, period.
Clemens> Nobody claimed that. I wanted to make the point that it is quite easy
Clemens> to define hygienic macros in CL.
And I made the point that what you're talking about is not hygiene.
You still need explicit annotations to prevent variable capture, at
definitions *and* uses. This is tedious and error-prone. You're
doing nothing to respect the binding rules of the underlying language.
(I don't understand your last sentence.)
Where do I need explicit annotations? At definition time, I say which
hygienic variables I want. This is an explicit annotation. On the
other hand, I don't think that in Scheme you can say you want this and
that variable *not* to be hygienic. In CL you can have both
behaviours, in Scheme only one.
The usage is certainly the same:
(foo0 1)
(foo1 1)
(foo2 1)
Yours,
--
Clemens Heitzinger
Student der Techn. Mathematik, Technische Universität Wien, Österreich
Vienna University of Technology, Austria