=== ALL USERS PLEASE NOTE ========================
CAR and CDR now return extra values.
The function CAR now returns two values. Since it has to go to the trouble
to figure out if the object is carcdr-able anyway, we figured you might as
well get both halves at once. For example, the following code shows how to
destructure a cons (SOME-CONS) into its two slots (THE-CAR and THE-CDR):
For symmetry with CAR, CDR returns a second value which is the CAR of the
object. In a related change, the functions MAKE-ARRAY and CONS have been
fixed so they don't allocate any storage except on the stack. This should
hopefully help people who don't like using the garbage collector because
it cold boots the machine so often.
ALL USERS PLEASE NOTE ========================
There has been some confusion concerning MAPCAR.
(DEFUN MAPCAR (&FUNCTIONAL FCN &EVAL &REST LISTS)
(PROG (V P LP)
(SETQ P (LOCF V))
L (SETQ LP LISTS)
(%START-FUNCTION-CALL FCN T (LENGTH LISTS) NIL)
L1 (OR LP (GO L2))
(AND (NULL (CAR LP)) (RETURN V))
(%PUSH (CAAR LP))
(RPLACA LP (CDAR LP))
(SETQ LP (CDR LP))
(GO L1)
L2 (%FINISH-FUNCTION-CALL FCN T (LENGTH LISTS) NIL)
(SETQ LP (%POP))
(RPLACD P (SETQ P (NCONS LP)))
(GO L)))
We hope this clears up the many questions we've had about it....