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

Re: issue EVAL-WHEN-NON-TOP-LEVEL



This is a reasonable approach to making EVAL-WHEN well defined, but there
seems to be a problem when the COMPILE situation is specified without the
EVAL situation.  In this form, I believe (FOO) would never be evaluated in
any context, which is definitely an incompatible change:
    (eval-when (compile)
      (eval-when (compile)
	(foo)))

Admittedly, I have argued in the past that it is never meaningful to
specify the COMPILE situation without the EVAL situation, but if the intent
is to fix up EVAL-WHEN, then we should attempt to be as compatible as
possible.

But perhaps this is worked around by the usage of *in-the-compiler*?  It
definitely needs to be made clearer what exactly is being done with that
varaible where.  But if my above interpretation of nested uses of the
COMPILE situation is incorrect, then the text description should also be
changed, since it seems to be consistent with my interpretation.

As far as explanation of what EVAL-WHEN does, I think there should be
explicit mention of the fact that only the outermost use of the COMPILE
situation nulls the evaluation environment.  This implied by the sample
implementation, and is exploited by your DEFMACRO environment example, but
should be made more explicit.

I agree with Jonl's remarks about the presentation of the proposal.

  Rob