(setf (rest list) new-tail)
list—a list, which might be a dotted list or a circular list.
tail—an object.
rest
performs the same operation as cdr
,
but mnemonically complements first
.
Specifically,
(rest list) ≡ (cdr list) (setf (rest list) new-tail) ≡ (setf (cdr list) new-tail)
(rest '(1 2)) → (2) (rest '(1 . 2)) → 2 (rest '(1)) → NIL (setq *cons* '(1 . 2)) → (1 . 2) (setf (rest *cons*) "two") → "two" *cons* → (1 . "two")
rest
is often preferred stylistically over cdr
when the argument is to being subjectively viewed as a list
rather than as a cons.