|
ANSI Common Lisp 14 Conses 14.2 Dictionary of Conses
14.2.9 car, cdr, caar, cadr, cdar, cddr, caaar, caadr, cadar, caddr, cdaar, cdadr, cddar, cdddr, caaaar, caaadr, caadar, caaddr, cadaar, cadadr, caddar, cadddr, cdaaar, cdaadr, cdadar, cdaddr, cddaar, cddadr, cdddar, cddddr |
Accessor |
- Syntax:
-
car x | object | | | (setf (car x)
new-object) |
cdr x | object | | | (setf (cdr x) new-object) |
| |
caar x | object | | | (setf (caar x) new-object) |
cadr x | object | | | (setf (cadr x) new-object) |
cdar x | object | | | (setf (cdar x) new-object) |
cddr x | object | | | (setf (cddr x) new-object) |
| |
caaar x | object | | | (setf (caaar x) new-object) |
caadr x | object | | | (setf (caadr x) new-object) |
cadar x | object | | | (setf (cadar x) new-object) |
caddr x | object | | | (setf (caddr x) new-object) |
cdaar x | object | | | (setf (cdaar x) new-object) |
cdadr x | object | | | (setf (cdadr x) new-object) |
cddar x | object | | | (setf (cddar x) new-object) |
cdddr x | object | | | (setf (cdddr x) new-object) |
| |
caaaar x | object | | | (setf (caaaar x) new-object) |
caaadr x | object | | | (setf (caaadr x) new-object) |
caadar x | object | | | (setf (caadar x) new-object) |
caaddr x | object | | | (setf (caaddr x) new-object) |
cadaar x | object | | | (setf (cadaar x) new-object) |
cadadr x | object | | | (setf (cadadr x) new-object) |
caddar x | object | | | (setf (caddar x) new-object) |
cadddr x | object | | | (setf (cadddr x) new-object) |
cdaaar x | object | | | (setf (cdaaar x) new-object) |
cdaadr x | object | | | (setf (cdaadr x) new-object) |
cdadar x | object | | | (setf (cdadar x) new-object) |
cdaddr x | object | | | (setf (cdaddr x) new-object) |
cddaar x | object | | | (setf (cddaar x) new-object) |
cddadr x | object | | | (setf (cddadr x) new-object) |
cdddar x | object | | | (setf (cdddar x) new-object) |
cddddr x | object | | | (setf (cddddr x) new-object) |
- Pronunciation:
-
cadr: [ 'ka'dEr ]
caddr: [ 'kadE'dEr ]
or [ 'ka'düdEr ]
cdr: [ 'kü'dEr ]
cddr: [ 'küdE'dEr ]
or [ 'kE'düdEr ]
- Arguments and Values:
-
x - a list.
object - an object.
new-object - an object.
- Description:
-
If x is a cons, car returns the car
of that cons. If x is nil, car returns nil.
If x is a cons, cdr returns the cdr
of that cons. If x is nil, cdr returns nil.
Functions are provided which perform compositions of up to four
car and cdr operations. Their names consist of
a C, followed by two, three, or four occurrences of A or D,
and finally an R. The series of A's and D's in each
function's name is chosen to identify the series of
car and cdr operations that is performed by the function.
The order in which the A's and D's appear is the inverse of the
order in which the corresponding operations are performed. The next figure
defines the relationships precisely.
CAR and CDR variants
This place ... |
Is equivalent to this place ... |
(caar x) |
(car (car x)) |
(cadr x) |
(car (cdr x)) |
(cdar x) |
(cdr (car x)) |
(cddr x) |
(cdr (cdr x)) |
(caaar x) |
(car (car (car x))) |
(caadr x) |
(car (car (cdr x))) |
(cadar x) |
(car (cdr (car x))) |
(caddr x) |
(car (cdr (cdr x))) |
(cdaar x) |
(cdr (car (car x))) |
(cdadr x) |
(cdr (car (cdr x))) |
(cddar x) |
(cdr (cdr (car x))) |
(cdddr x) |
(cdr (cdr (cdr x))) |
(caaaar x) |
(car (car (car (car x)))) |
(caaadr x) |
(car (car (car (cdr x)))) |
(caadar x) |
(car (car (cdr (car x)))) |
(caaddr x) |
(car (car (cdr (cdr x)))) |
(cadaar x) |
(car (cdr (car (car x)))) |
(cadadr x) |
(car (cdr (car (cdr x)))) |
(caddar x) |
(car (cdr (cdr (car x)))) |
(cadddr x) |
(car (cdr (cdr (cdr x)))) |
(cdaaar x) |
(cdr (car (car (car x)))) |
(cdaadr x) |
(cdr (car (car (cdr x)))) |
(cdadar x) |
(cdr (car (cdr (car x)))) |
(cdaddr x) |
(cdr (car (cdr (cdr x)))) |
(cddaar x) |
(cdr (cdr (car (car x)))) |
(cddadr x) |
(cdr (cdr (car (cdr x)))) |
(cdddar x) |
(cdr (cdr (cdr (car x)))) |
(cddddr x) |
(cdr (cdr (cdr (cdr x)))) |
setf can also be used with any of these functions to change an
existing component of x, but setf will not make new
components. So, for example, the car of a cons
can be assigned with setf of car,
but the car of nil cannot be assigned with setf of car.
Similarly, the car of the car of a cons whose car
is a cons can be assigned with setf of caar,
but neither nil nor a cons whose car is nil can be assigned
with setf of caar.
The argument x is permitted to be a dotted list
or a circular list.
- Examples:
-
(car nil) NIL
(cdr '(1 . 2)) 2
(cdr '(1 2)) (2)
(cadr '(1 2)) 2
(car '(a b c)) A
(cdr '(a b c)) (B C)
- Exceptional Situations:
-
The functions car and cdr
should signal type-error if they receive an argument which is not a
list. The other functions (caar, cadr,
... cddddr) should behave for the purpose of
error checking as if defined by appropriate calls to car and
cdr.
- See Also:
-
rplaca, first, rest
- Notes:
-
The car of a cons can also be altered by using rplaca,
and the cdr of a cons can be altered by using rplacd.
(car x) ==(first x)
(cadr x) ==(second x) ==(car (cdr x))
(caddr x) ==(third x) ==(car (cdr (cdr x)))
(cadddr x) ==(fourth x) ==(car (cdr (cdr (cdr x))))
- Allegro CL Implementation Details:
-
None.
|