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

PROCLAIM and implicit EVAL-WHEN



    Date: 3 Jun 83 17:52:01 EDT
    From: Dir LCSR Comp Facility <HEDRICK@RUTGERS.ARPA>
    A2. I think I am opposed to the details of the new PROCLAIM.  I agree
	    with most of what is proposed, but I do not like the idea of an
	    implicit EVAL-WHEN, at least if I understand what is meant. I
	    would like PROCLAIM to be evaluated in exactly the same way as
	    DEFUN.  That is, if you type it at the top level of Lisp, or it
	    is at the top level of a file, it would work in the expected
	    way.  As I understand it, you are proposing that a PROCLAIM
	    could occur in a random place in the middle of code, and it
	    would still happen at COMPILE or LOAD time.  I think this is a
	    bad idea.  The whole idea of restricting DECLARE to the
	    beginning of blocks was to minimize this kind of thing.

I guess this wasn't explained very well; probably my fault.  The implicit
EVAL-WHEN is to make PROCLAIM be evaluated in exactly the same way as DEFUN.
In other words, when the compiler sees PROCLAIM "at top level" it evaluates
it at compile time, rather than just pushing the form through into the "fasl"
file to be evaluated at load time.  There are a bunch of functions and special
forms with this property, that the compiler knows to handle them at compile
time; hopefully the next edition of the manual will list them.

Precisely what "at top level" means seems to be still under discussion.  But
clearly it means at least real top-level, inside PROGN, and inside COMPILER-LET.
It means inside some flavors of EVAL-WHEN too.  But it doesn't mean at a
random place in the middle of code; there PROCLAIM is just a function like
any other.

    By the way, would you allow us to set CALL-VALUES-LIMIT to 1?
No, for obvious reasons (there are functions in the manual that are
defined to return two values).