Thursday FEB 07,1980 FM+6D.18H.36M.35S. LISP 1922 - JONL - 1) MACRO-EXPANSION-USE is a user-extensible feature - you may supply a function to do the macro "memoizing" or "displaceing". 2) FBOUNDP and SELECTQ defined as macros in MACAID, have autoload properties. 3) (STATUS FASLNAMELIST) gets the namelist of the file being FASLOAD'd or returns null if not in FASLOAD. 4) LOAD-BYTE (and DEPOSIT-BYTE) had their sense reversed - bit numbering is now low-order to high ("right-to-left") as in VAX-like computers. LDB and DPB remain the same. ____________________________________________________________________________ 1) MACRO-EXPANSION-USE is a user-extensible feature - you may supply a function to do the macro "memoizing" or "displaceing". The run-time global-variable MACRO-EXPANSION-USE, if not null, holds a "memoizing hook" function for macroexpansions (that is, for those defined by DEFMACRO with the DEFMACRO-DISPLACE-CALL option). This function takes two arguments, the original form and the expansion, and handles any displaceing, memoizing or whatever. The available built-in options are: () - No memoizing or displaceing, but just use the expansion. MACROEXPANDED - A system-supplied memoized-displace feature, which pays attention to changes of MACRO-EXPANSION-USE, and to any redefinition of the macro. MACROMEMO - A system-supplied hash-array scheme, for memoizing without displace the original form, but which does "pay attention" as above. (data on the hash-array are in MACROMEMO). Or, you may use any appropriate two-argument function, such as DISPLACE - Replace CAR and CDR of first arg with those from second. Previous usages of DEFMACRO and MACRO-EXPANSION-USE are fully compatible. Note: macros defined by MACRO or DEFUN, rather than by DEFMACRO will not interface to the generalized memoizing feature. Additionally, one should take care not to clobber the three system functions mentioned above, since other parts of the system depend upon them. 2) FBOUNDP and SELECTQ defined as macros in MACAID, have autoload properties. (FBOUNDP x) ==> (GETL x '(SUBR FSUBR LSUBR EXPR FEXPR MACRO)) SELECTQ just turns into CASEQ, but if the last clause was an "OTHERWISE", then it becomes "T" (so that CASEQ will stop on it)