12/8/74 JONL & GLS
Remember, BIBOP LISP is now the standard system LISP!
[As of version number 958].
LISTARRAY has been extended to be an LSUBR. an optional second
argument puts a bound on the number of elements to LISTIFY.
For example, (LISTARRAY ary 5) lists only the first five elements
of ary; while (LISTARRAY ary), as before, lists all elements.
note that (LISTARRAY ary (APPLY 'TIMES (CDR (ARRAYDIMS ary))))
also lists all elements.
MAKOBLIST, MAKREADTABLE, and BLTARRAY have been flushed. If you
used them before, you can substitute calls as in the table below:
FOR THIS CODE USE THIS INSTEAD
(BLTARRAY x y) (FILLARRAY Y X)
;note reversal of args
(MAKREADTABLE x) (*ARRAY x 'READTABLE)
x not T or NIL
(MAKREADTABLE t-or-nil) (*ARRAY (GENSYM) 'READTABLE t-or-nil)
(MAKOBLIST x) (*ARRAY x 'OBARRAY)
x not NIL
(MAKOBLIST NIL) (LISTARRAY
OBARRAY
(- (CADR (ARRAYDIMS 'OBARRAY)) 129.))
Note that FILLARRAY is consistent in that it always transfers
the contents of its second arg into the first, and returns
the first (an array). Note too that this means that when
replacing a BLTARRAY by a FILLARRAY, you must reverse the args.
SYMEVAL lives! If you know that you are evaluating an atomic symbol,
it will be faster to use SYMEVAL rather than the general-purpose
EVAL. In particular, as soon as BIBOP LISP becomes the settled
standard, SYMEVAL will compile optimally into two instructions.
In *RSET mode, all car-cdr calls are checked at each level to see
that CAR or CDR is applied only to proper data. This checking is
not done by compiled code [which usually open-codes car-cdr ings]
[this is not really true, because compiled code calls functions
like CDDDDR, even if the user does not explicitly use them],
nor when *RSET = NIL. CAR and CDR are variables which control
the checking as follows:
LIST can hack only lists
NIL can hack lists and NIL
SYMBOL can hack lists, NIL, and symbols
T can hack anything.
When in *RSET mode, the value of CDR controls the permissible
operations for the function CDR, and the value of CAR controls
the permissible operations for the function CAR.