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