[comp.sys.xerox] DATE becomes a constant when compiled

Kevin_Crowston@XV.MIT.EDU (02/19/88)

In Lyric, with the CL compiler, (DATE) seems to be treated as
a constant.  For example,

(DEFINEQ (a () (DATE)))

Calling a when it's interpreted correctly returns the current date, 
which is different each time.  

Now:

(CL:COMPILE 'a)

Now calling a gives the same answer each time, the time at which a
was compiled.

Kevin Crowston
MIT Sloan School of Management

lane@SUMEX-AIM.STANFORD.EDU (Christopher Lane) (02/19/88)

(SETPROPLIST 'DATE (GETPROPLIST 'RAND))

seems to be a temporary workaround (you have to recompile of course).  I did
a MAPATOMS to see if I could spot another function that had both the same 
compiler property as DATE and was the same kind of function (one for which a
constant argument gives varying results) but I didn't notice any (except 
possibly for TIMEREXPIRED? when applied to a compile-time constant, which is
not something one wants to do, I imagine).

- Christopher

Lanning.pa@XEROX.COM (Stanley's Tool Works) (02/20/88)

Better than

(PUTPROP 'DATE 'COMPILER::SIDE-EFFECTS-DATA NIL)

is

(PUTPROP 'DATE 'COMPILER::SIDE-EFFECTS-DATA '(:NONE . :ANY))

The same needs to be done to GDATE.

----- smL