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

draft minutes of June 1992 meeting



   Date: Fri, 9 Oct 92 14:57:51 -0700
   From: William Clinger <will@skinner.cs.uoregon.edu>

	      Draft Minutes of the RnRS Authors meeting
			   25 June 1992
			    Xerox PARC
	       recorded and edited by William Clinger

   ...
   Macros:  Chris Hanson moved that the high level macro system be
   moved from the appendix into the report proper.  Rozas seconded.
   After discussion, including discussion of Dybvig's week-old
   low-level macro proposal, 21 voted in favor of Hanson's motion
   and none voted against.  Jim Miller then recommended that the
   naming conventions suggest that a special character end the names
   of macros.  This recommendation was opposed.  Miller then asked
   to change his vote on Hanson's motion.  The final vote is therefore
   20 in favor, 1 opposed.

Since macros will be included in the Report, some things need to be
clarified:

In the first column of the Macro Appendix is the claim "With this
extension, there are no reserved identifiers."  This seems ridiculous!
What about LET-SYNTAX, LETREC-SYNTAX, SYNTAX-RULES, DEFINE-SYNTAX, and
BEGIN?

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?  If macros share the top level environment
with variables then the definition of function FOO will be lost and
bar will get an error or return expanded code.  If they don't share
environments, which definition of FOO should be used?  If the macro
FOO is used then BAR, which was already compiled, would have to be
recompiled (and interpreted behaviour would differ from compiled!); If
the function FOO is used then DEFINE takes precedence over
DEFINE-SYNTAX, a condition I think most people will find
counter-intuitive; also, since there is no UNDEFINE syntax, once a
symbol is set it can never be used as a top level macro.  The only
other option is for DEFINE-SYNTAX of an already defined symbol to be
an error.

This problem would also be eliminated by making mandatory Jim Miller's
suggestion that a special character end the names of macros.  In this
case, macros would be syntactically distinguished and there would be
no conflicts in the name space.