first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth (original) (raw)

ANSI Common Lisp 14 Conses 14.2 Dictionary of Conses

14.2.21 first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth Accessor

Syntax:

first list object | (setf (first list) new-object)
second list object | (setf (second list) new-object)
third list object | (setf (third list) new-object)
fourth list object | (setf (fourth list) new-object)
fifth list object | (setf (fifth list) new-object)
sixth list object | (setf (sixth list) new-object)
seventh list object | (setf (seventh list) new-object)
eighth list object | (setf (eighth list) new-object)
ninth list object | (setf (ninth list) new-object)
tenth list object | (setf (tenth list) new-object)

Arguments and Values:

list - a list, which might be a dotted list or a circular list.

object, new-object - an object.

Description:

The functionsfirst,second,third, fourth, fifth,sixth,seventh,eighth, ninth, andtenth access the first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, and tenth elements of list, respectively. Specifically,

(first list) == (car list) (second list) == (car (cdr list)) (third list) == (car (cddr list)) (fourth list) == (car (cdddr list)) (fifth list) == (car (cddddr list)) (sixth list) == (car (cdr (cddddr list))) (seventh list) == (car (cddr (cddddr list))) (eighth list) == (car (cdddr (cddddr list))) (ninth list) == (car (cddddr (cddddr list))) (tenth list) == (car (cdr (cddddr (cddddr list))))

setf can also be used with any of these functions to change an existing component. The same equivalences apply. For example:

(setf (fifth list) new-object) ==(setf (car (cddddr list)) new-object)

Examples:

(setq lst '(1 2 3 (4 5 6) ((V)) vi 7 8 9 10)) (1 2 3 (4 5 6) ((V)) VI 7 8 9 10) (first lst) 1 (tenth lst) 10 (fifth lst) ((V)) (second (fourth lst)) 5 (sixth '(1 2 3)) NIL (setf (fourth lst) "four") "four" lst (1 2 3 "four" ((V)) VI 7 8 9 10)

See Also:

car, nth

Notes:

first is functionally equivalent to car,second is functionally equivalent to cadr,third is functionally equivalent to caddr, and fourth is functionally equivalent to cadddr.

The ordinal numbering used here is one-origin, as opposed to the zero-origin numbering used by nth:

(fifth x) ==(nth 4 x)

Allegro CL Implementation Details:

None.