[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
specifications.
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.