[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: the lexical environment for DEFTYPE, DEFINE-SETF-METHOD and
Date: Mon, 12 Oct 87 11:56 EDT
From: Ram@C.CS.CMU.EDU
If I believed in your proposed semantics for DEFMACRO, then I would
buy this argument, but I don't. It seems to me to be a bizzarre
suggestion that the semantics of an operation should depend on whether
the environment is null or not. I think that the only reason that
anyone buys this at all is that Lisp compilers have traditionally
magically special-cased forms that "appear at top-level", whatever
that means.
I think that there is a pretty convincing argument that the whole
concept of a "top-level form" is inappropriate in a lexically scoped
Lisp. In my proposal for Common Lisp compilation (really evaluation)
semantics, I define things in a way that is consistent with general
usage, but makes no use of the concept "top level".
If I remember your proposal correctly (it's been a while since I read
it), you insist that the compiler ALWAYS be able to evaluate the body of
a DEFMACRO. I claim that this is overly restrictive. I can well
imagine wanting to use a lexical variable as an "own" variable for
maintaining state across expansions of a particular macro. Such
variables might be used for allowing functionality like the :include
feature of DEFSTRUCT, for keeping statistics, etc. Your semantics would
not allow this.
I have no trouble with requiring the compiler to notice macro
definitions and to make use of them when it can. I also have no trouble
with there being a class of such definitions that cannot be made use of
at compilation time.
Pavel