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

Re: issue QUOTE-MAY-COPY, version 2

> The basic flaw we have been having in this discussion is that whenever
> someone proposes "Let QUOTE have semantics **as if** it made a copy",
> then someone else reads that to be saying "QUOTE must necessarily
> copy its argument".  The quote (no pun intended) you have from Sandra's 
> msg is really in the form of a conditional "IF quote makes a copy, then 
> it can only happen under such-and-such a set of circumstances."

Um, I guess it must be that some kind of misunderstanding is taking
place, but it looks like it may be on both sides.  Perhaps I am somewhat
misreading Sandra and Chris, or misstating my own points, but I did
understand "may copy" to mean "may copy" and not "must copy".  The
problem is that I'm not convinced QUOTE should be allowed to copy.

> The issue that QUOTE-MAY-COPY is proposing is merely to **defeat** the
> counter proposals QUOTE-MUST-NOT-COPY; or QUOTE-MUST-PRESERVE-EQLness.
> It is not to say that any implementation ever has to do any copying.

Just to make this clear, I currently favor the counter-proposals: I
would like to have EQL-identity preserved except when file operations
are involved.

For me, the first question is whether the semantics of file compilation
must, for consistency, carry over into the rest of the language.  If
that's so, then you are right, and QUOTE must be allowed to copy.  But
that's not all that must happen.  The file compiler's restrictions on
what types can appear in constants and on whether constants can be
circular (if we decide there are circularity restrictions) must also
constrain the semantics of EVAl and COMPILE.  Kent Pitman gave some
arguments in favor of distinguishing between COMPILE (and EVAL) and
COMPILE-FILE on the issues of types and circularity, and I think they
are good arguments, not to be cast aside without some careful thought.

> I read Cris's comments as saying that QUOTE-MAY-COPY is the only
> consistent interpretation, because even if an implementation of QUOTE
> itself never does any copying, the semantics of the result will be
> forced to be "maybe is a copy" by other constraints (such as 
> consistency with file compilation).  I think you yourself even
> acknowledge this point later in your msg.

What I have been trying to say was that (1) it may turn out that "QUOTE
may copy" is the only consistent interpretation, but (2) Chris's model
suggests that there might be a different consistent (or at least
reasonable) interpretation, namely that all copying (and coalescing
for that matter) is associated with file operations.  Moreover, (3)
I think some of the arguments for consistency with file compilation
are at least not immediately convincing.  We know, for example, that
a Common Lisp might always compile and so not have an interpreter-like
EVAL; but is it OK for a Common Lisp to have only a file compiler?
Some arguments seem to depend on that being OK.

-- Jeff