[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MIT-Scheme-devel] Keywords
From: |
Taylor R Campbell |
Subject: |
Re: [MIT-Scheme-devel] Keywords |
Date: |
Thu, 1 Apr 2010 20:44:45 -0400 |
User-agent: |
IMAIL/1.21; Edwin/3.116; MIT-Scheme/7.7.90.+ |
Date: Fri, 19 Mar 2010 12:03:35 -0700
From: Joe Marshall <address@hidden>
The tokens `:yes' and `:no' don't need quoting or unquoting or any
careful attention to what level of expansion they will be quoted at.
They are just literal symbolic tokens that get no special treatment by
the evaluator just because they are symbols.
As I said before, one could do without keywords and just use symbols,
and then you'd have to think a bit harder about which ones to quote
and unquote at which level, but you could do it. It is just a
convenience. But then, LET is simply a trivial convenience over using
LAMBDA.
When you're writing the macro you need to decide what its evaluation
rules are. You can defer parts of that decision to some other
operator by passing subforms of the input to an invocation of the
other operator. Introducing self-evaluating symbols doesn't make the
decision any easier or more convenient, however. It only makes
certain uses of macros independent of that decision.
I still don't buy it, and I'm afraid I got lost in your example --
there were about a dozen keywords involved, and it was not clear to me
which ones needed to be self-evaluating objects and how that had
anything to do with how much quoting and unquoting you needed to write
in your macro. I agree that your macro looked hairy, but its
hairiness was unrelated to the use of keywords with ECASE.
- Re: [MIT-Scheme-devel] Keywords,
Taylor R Campbell <=