Next: Building Lists, Previous: List-related Predicates, Up: Lists
This function returns the value referred to by the first slot of the cons cell cons-cell. Expressed another way, this function returns the car of cons-cell.
As a special case, if cons-cell is
nil
, thencar
is defined to returnnil
; therefore, any list is a valid argument forcar
. An error is signaled if the argument is not a cons cell ornil
.(car '(a b c)) => a (car '()) => nil
This function returns the value referred to by the second slot of the cons cell cons-cell. Expressed another way, this function returns the cdr of cons-cell.
As a special case, if cons-cell is
nil
, thencdr
is defined to returnnil
; therefore, any list is a valid argument forcdr
. An error is signaled if the argument is not a cons cell ornil
.(cdr '(a b c)) => (b c) (cdr '()) => nil
This function lets you take the car of a cons cell while avoiding errors for other data types. It returns the car of object if object is a cons cell,
nil
otherwise. This is in contrast tocar
, which signals an error if object is not a list.(car-safe object) == (let ((x object)) (if (consp x) (car x) nil))
This function lets you take the cdr of a cons cell while avoiding errors for other data types. It returns the cdr of object if object is a cons cell,
nil
otherwise. This is in contrast tocdr
, which signals an error if object is not a list.(cdr-safe object) == (let ((x object)) (if (consp x) (cdr x) nil))
This macro is a way of examining the car of a list, and taking it off the list, all at once. It is new in Emacs 21.
It operates on the list which is stored in the symbol listname. It removes this element from the list by setting listname to the cdr of its old value—but it also returns the car of that list, which is the element being removed.
x => (a b c) (pop x) => a x => (b c)
This function returns the nth element of list. Elements are numbered starting with zero, so the car of list is element number zero. If the length of list is n or less, the value is
nil
.If n is negative,
nth
returns the first element of list.(nth 2 '(1 2 3 4)) => 3 (nth 10 '(1 2 3 4)) => nil (nth -3 '(1 2 3 4)) => 1 (nth n x) == (car (nthcdr n x))The function
elt
is similar, but applies to any kind of sequence. For historical reasons, it takes its arguments in the opposite order. See Sequence Functions.
This function returns the nth cdr of list. In other words, it skips past the first n links of list and returns what follows.
If n is zero or negative,
nthcdr
returns all of list. If the length of list is n or less,nthcdr
returnsnil
.(nthcdr 1 '(1 2 3 4)) => (2 3 4) (nthcdr 10 '(1 2 3 4)) => nil (nthcdr -3 '(1 2 3 4)) => (1 2 3 4)
This function returns the last link of list. The
car
of this link is the list's last element. If list is null,nil
is returned. If n is non-nil the n-th-to-last link is returned instead, or the whole list if n is bigger than list's length.
This function returns the length of list, with no risk of either an error or an infinite loop.
If list is not really a list,
safe-length
returns 0. If list is circular, it returns a finite value which is at least the number of distinct elements.
The most common way to compute the length of a list, when you are not
worried that it may be circular, is with length
. See Sequence Functions.