Wednesday February 17,1982 LQ+2D.4H.21M.13S. -- JonL --
1) In SHARPM 82, #| now works as on the LISPM, namely #|...cruft...|#
"disappears" like a balanced comment; note that termination is |#
Also, #<n>R<ddd> now works; e.g. #3R21 is 7 (21 in base 3).
2) Two new functions in auxillary files, but not autoloading
DEFCONST is in the MLMAC file; it is like DEFVAR, but always SETQs.
ARRAYP is in the MLSUB file; returns true for non-funny arrays.
3) GENTEMP, an LSUBR, generates truly uninterned symbols. Should be
used in preference to GENSYM by macros which generate temporary
local variables.
4) The TTYNOTES-FUNCTION facility for COMPLR has been emended
_______________________________________________________________________
2) Two new functions in auxillary files, but not autoloading
DEFCONST is in the MLMAC file; it is like DEFVAR, but always SETQs.
ARRAYP is in the MLSUB file; returns true for non-funny arrays.
(defun ARRAYP (x)
(and (eq (typep x) 'ARRAY)
(memq (array-type x) '(NIL T FIXNUM FLONUM))
'T))
3) GENTEMP, an LSUBR, generates truly uninterned symbols. Should be
used in preference to GENSYM by macros which generate temporary
local variables.
GENTEMP permits one optional argument, a prefix for the symbol to be
created (defaults to T), and creates a symbol like
(maknam (append (explode <prefix>)
(explode '|..|)
(explode (<increment-gentemp-counter>))))
E.g., (GENTEMP) => |T..1|
(GENTEMP '|Foo|) => |Foo..1|
A basic problem with GENSYM is that even though the symbol is uninterned
when created, it may be written out to a FASL during compilation, and
upon loading it will then be interned; separate such compilations
can thus have unfortunate co-incidences between variables which were
thought to be unique. Any symbol with a +INTERNAL-TEMP-MARKER
property on its property list will be treated during compilation in
such a way that it won't be interned when the FASL file is loaded.
4) The TTYNOTES-FUNCTION facility for COMPLR has been emended
If a symbol has a TTYNOTES-FUNCTION property, then that is assumed to
be some function which when applied to the symbol will either return a
re-nameing of it for the unfasl and ttynotes purposes, or will return ()
meaning "I've alredy outputted all the msgs I care to see". Currently it
doesn't support the re-naming for break-point error msgs.