[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] ANN: first draft of R7RS small language available
On Wed 04 May 2011 22:20, Alaric Snell-Pym <alaric@x> writes:
> Personally, I always thought that comparing the symbol was the right and
> simple thing to do, but these examples have given me pause for
On my part, I never understood all of the implications, and still don't
understand them entirely; I think that comes from working with a system
in which `else' is unbound. Thanks to Andre for being patient with us,
> a 'compile' procedure, and an 'eval-when' that uses 'compile' as a
> keyword. Under such a system, people in such situations would *have*
> to give access to the 'compile' procedure in order to let people use
> the 'compile' keyword to 'eval-when'.
Procedural macros allow the user to make a choice between matching
keywords as datums or identifiers. In this case I changed to match the
eval-when situations as datums, because identifiers can't sensibly go
there. In the cond case, where a datum or an identifier may appear in
the same place, we probably will need to match keywords as identifiers.
Is that a general rule? That if your macro grammar is unambiguous
regarding in that keywords can only be seen in places where identifiers
are not valid -- like `case' -- then this point is largely moot; whereas
with `cond', which needs to compare `else' and `=>' as
identifiers... dunno where I'm going with this.
> We've heard a lot of reasons why each possible solution is wrong.
> Clearly, we have a tough decision to make.
Heh, I realize you're trying to direct things in a productive direction;
sorry for the noise here. But I have enjoyed this discussion on the
list; it's made things clearer for me.
I think that in the end, in Guile, we'll probably end up doing the
(define-syntax else ...) thing in 2.2. It seems like the right thing.
But perhaps great arguments on the Keywords wiki page will make me
change my mind :)
Scheme-reports mailing list