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

Re: Function constants

    Date: Tue, 25 Apr 89 08:23:25 MDT
    From: sandra%defun@cs.utah.edu (Sandra J Loosemore)

    > Date: Mon, 24 Apr 89 09:18:58 PDT
    > From: Richard P. Gabriel <rpg@lucid.com>
    > I am trying to avoid a situation in which we go to great lengths to
    > define a language - Common Lisp - and then we turn around and say,
    > ``heh, now if you want to write programs and compile them, here are
    > the rules: if you're going to compile things this way, you can do this,
    > but you can't do that; if you're going to compile things this other way,
    > here's what you have to do....''

    I agree, but it seems like the damage was done when we accepted
    proposal QUOTE-SEMANTICS:NO-COPYING.  The effect of that proposal is
    to make the requirements for COMPILE-FILE more restrictive than the
    ones for EVAL and COMPILE, so we are in fact dealing with two

I don't think it was QUOTE-SEMANTICS:NO-COPYING that did the damage.  I
think the damage occurred when COMPILE-FILE itself was admitted into the
language.  I see no chance of COMPILE-FILE ever being able to imitate
everything that can be done with EVAL, simply because COMPILE-FILE deals
with two copies of Lisp instead of one.  You don't have to do anything
involving constants to see differences between EVAL and COMPILE-FILE.
Macros are enough.

I don't think anyone wants to remove COMPILE-FILE, so instead I think
we have to specify a minimal set of restrictions on what programs can
do -at- -compile- -time- to make them compilable by COMPILE-FILE.  This
of course does not restrict what they can do at run time, which can
include calling COMPILE.  I don't see any analogy between COMPILE and
COMPILE-FILE, other than that they both call MACROEXPAND and both call
some common subroutine for making machine language instructions.  I
think the compiler commitee has been doing a pretty good job recently
of finding a minimal set of restrictions.  Dick, I agree with your
contention that the set of restrictions should be minimal, but not that
it should be empty, nor that it should be phrased in a way that is
independent of the idea of compiling or loading a file.