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

Issue: COMPILE-ENVIRONMENT-CONSISTENCY (Version 3)



This is said to be a clarification, but I believe it is a change because
it makes the default semantics very different from the NOTINLINE
semantics (items 2b and 2c).  However, I can't find anything in CLtL
that's contradicted by this proposal.

The second proposal paragraph says:

  In all cases, however, compiling a program (with COMPILE or
  COMPILE-FILE) provides a mechanism for forcing these transformations
  to be applied and a guarantee that, once compiled, no further
  transformations will be applied to that program.

What precisely is a "transformation"?  I think this paragraph
doesn't mean anything and should be removed.  If this means something
specific, for instance that MACROEXPAND can never be called as a
result of the evaluation of a top-level form in a COMPILE-FILE file,
nor as a result of calling a function defined in a COMPILE-FILE file,
it should say that explicitly.  By the way I think that claim is 
manifestly false, suppose you call MACROEXPAND explicitly, or call
something that calls it explicitly (for all I know a pretty printer
calls MACROEXPAND sometimes), or call a function defined in another
file that has an interpreted definition.  Maybe you can define this
more precisely, but I don't immediately see how.

Someone else on the CLOS committee, other than me, will have to
take care of rewording item 2h.

Since the rest of the proposal is okay, I'd vote in favor anyway.