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

Top-level EVAL-WHEN

    Date: Monday, 7 April 1986  09:17-EST
    From: BACH::GREEK <greek%bach.decnet at hudson.dec.com>
    Reply-To: BACH::GREEK <greek%bach.decnet at hudson.dec.com>
    To:   common-lisp <common-lisp at su-ai.ARPA>
    Re:   Top-level EVAL-WHEN

    I didn't quite understand Rob's point, but no one is excluding EVAL-WHEN
    buried in a top-level PROGN (as is typically generated by complex
    macros).  This is because all of the forms inside a top-level PROGN
    are "promoted" to top-level forms.

If I define a macro DEF-FROB which has some code in its body, I want to
be able to use this defining macro within a let:
  (let ((foo ...))
    (def-frob my-frob (x) ...))
If non-top-level EVAL-WHEN's are prohibited, then users cannot define
defining macros which expand into code containing EVAL-WHEN's unless
those macros are only used at top level.  I don't think that anyone
considers the body of a let to be at top level; if they do, then where
does top-level stop?  One way to look at my proposal is as saying
"everywhere is top-level."  I see no need for defining the notion of
top-level, and see good reasons not to.