[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

I'm not doing a good job

   Date: Fri, 6 Nov 92 14:59:26 -0500
   From: "Aubrey Jaffer" <jaffer@martigny.ai.mit.edu>
   To: rrrs-authors@ai.mit.edu
   Subject: draft minutes of June 1992 meeting
   Since macros will be included in the Report, some things need to be

   In the first column of the Macro Appendix is the claim "With this
   extension, there are no reserved identifiers."  This seems ridiculous!

It doesn't seem ridiculous to me.  What about them?  Do you see problem
with `begin' (for example) being an ordinary name that happens to be
defined as a keyword initially (just as `car' is initially defined as an
identifier)?  If you do, then you better spell it out, because it isn't
obvious to me, and I suspect it isn't obvious to many other people as well.

   Although the Appendix says that "DEFINE-SYNTAX, ... are analogous to
   DEFINE ...", I don't see how DEFINE-SYNTAX can reasonably interract
   with a dynamic top level define.  For instance:

     (define (foo x) (+ 1 x))
     (define (bar x) (foo (foo x)))
     (define-syntax foo
       (syntax-rules () ((foo var) ''var)))
     (bar 3)

   What should (BAR 3) return?

I don't know, but I don't think the fact that `foo' was redefined from
being an identifier into being keyword has anything to do with the answer.
Suppose the example had instead been:

  (define-syntax foo
    (syntax-rules () ((foo var) '(+ 1 var))))
  (define (bar x) (foo (foo x)))
  (define-syntax foo
    (syntax-rules () ((foo var) ''var)))
  (bar 3)

What should `(bar 3)' return now?  I would assume that each implementation
has its own story to tell about what happens when a name is syntactically
redefined -- the answers in both examples should be analogous.

Clarifying issues like this are why I find the notion of there being a
"syntactic environment" so compelling.