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

Re: 4.2

I'm sorry, but the language that's now in the draft Kathy sent me does
indeed look like it places restrictions on what users can do.  To me
it carries a strong implication that the only portable usage of
COMPILE-FILE and LOAD is when the compiled file is loaded into a
"fresh" Lisp image.

If your goal is really to give users a hint about how to structure
their programs so that they'll be guaranteed to work in all
implementations, saying that the compiler can assume that the code
will be loaded into a "fresh" Lisp image does not really help in that
direction at all.  Maybe what you really want to do is to put some
additional restrictions on the structure of conforming programs?
Since the conformance-position proposal has not yet been sorted out,
one thing I've been assuming is that not all programs will load
correctly in all circumstances, but still be a conforming program.
For example, a file might have a call to a function appearing as a
top-level form, and that function would have to be defined before the
file can be loaded.  That would be the case regardless of whether or
not the file being loaded is a source file or a compiled file.  If you
want to say that such programs are not conforming, that's OK, but I
think the statement belongs in the discussion of conformance, not the
discussion of compilation semantics, since the question of whether or
not the file is guaranteed to load correctly has nothing to do with
whether the file is in source or compiled form.  This is what I was
talking about before when I said that a file might not load correctly
for reasons that have nothing to do with compilation. 

Anyway, given some circumstances in which the source program will load
correctly, we can guarantee that the compiled program will also load
correctly in those same circumstances provided that certain conditions
also held when the program was compiled.  The purpose of this section
is to describe what those conditions are.