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

Failed mail

Unable to deliver to the following recipient:
Common-Lisp at SU-AI: Host not responding.

----- Failed message follows -----
Date: Fri, 15 Jul 1983 19:29:00 -0000
From: BENSON at SPA-Nimbus
Subject: Re: Top level forms in a compiled file
To: Martin.Griss <Griss at UTAH-20>, Common-Lisp at SAIL
In-reply-to: The message of 15 Jul 83 12:07-PDT from Martin.Griss <Griss at UTAH-20>

    Date: 15 Jul 1983 1307-MDT
    From: Martin.Griss <Griss@UTAH-20>
    Subject: Re: Top level forms in a compiled file
    cc: Griss@UTAH-20
    In-Reply-To: Your message of 14-Jul-83 2127-MDT

    Should also mention that sometimes need COMPILETIME or BOTHTIMES to also get
    the execution of functions that used in defining forms to be compiled further
    on. MACRO definitions are explicitly BOTHTIMES..

That's a separate issue, but one that should also be
addressed by the standard.  On the Lisp Machine, macros aren't actually
defined in the global compile time environment, just saved in a private
place known to the compiler.  Only an explicit EVAL-WHEN (COMPILE)
actually puts something in the compile time Lisp world.  Compare that
with Arthur Norman's request to make everything evaluated at compile
time by default!  The former strategy is designed for the Lisp system
builder, where compiling an incompatible version of part of the existing
environment would be disastrous if things changed out from under him.  I
know this happened on many occasions with PSL, especially when
cross-compiling to a new machine.  Arthur's suggestion is geared to the
applications programmer, who usually wants the effect of incremental
evaluation even when compiling to a file.  I suspect if we were to
survey Lisp programmers who are not Lisp implementors, most would prefer
to have everything defined at compile time.  On the other hand, it is
much more than just inconvenient to system implementors if this is the
case.  Uh oh, I feel an impending global variable, *EVAL-WHEN-DEFAULT*,
set to (LOAD EVAL) by systems hackers and (COMPILE LOAD EVAL) by real
people.  Of course, one had better set it inside an EVAL-WHEN...

-- Eric