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

issue DEFINING-MACROS-NON-TOP-LEVEL, version 8



I favor DEFINING-MACROS-NON-TOP-LEVEL:ALLOW except for one thing.
This sentence appears in the proposal but does not appear to have
any relation to the main issue:

  The order in which
  non-top-level subforms of a top-level form are processed by the
  compiler is explicitly left unspecified.

I can't figure out what this means and the example in the rationale
section that purports to explain this does not shed any light, since in
the example there is no change of order of evaluation.  I wouldn't be
surprised if I opposed this if I did understand what it means.  Can we
deal with this as a separate issue?  In fact the whole point (3) of the
proposal should be moved.  That issue should also discuss whether there
are any constraints on whether one top-level form is processed before
the next top-level form is read, in case the one form changes package,
changes readtable, defines a read-syntax, or defines a structure used in
#S read-syntax.

Also, when you say:

  Clarify
  that all defining macros which create functional objects (including
  DEFMACRO, DEFTYPE, DEFINE-SETF-METHOD, and the complex form of
  DEFSETF, as well as DEFUN) must ensure that those functions are
  defined in the lexical environment in which the defining form is
  evaluated.

I strongly believe that MACROLET must be consistent with this, which
would be a change.  Has that been dealt with as a separate issue?  If
not, it should either be added to this issue or brought up as a
separate issue, with the interdependency noted in both writeups to
minimize the chance of an inconsistent vote.