car y cdr son operaciones primitivas sobre las celdas cons (o "expresiones S no atómicas") introducidas en el lenguaje de programación Lisp. Una celda cons se compone de dos punteros, la operación car extrae el primer puntero, y la operación cdr extrae el segundo.
Por lo tanto, la expresión (car (cons x y))
se evalúa como x
, y (cdr (cons x y))
se evalúa como y
.
Cuando las celdas cons son usadas para implementar listas enlazadas simples (en vez de árboles y otras estructuras más complicadas), la operación car devuelve el primer elemento de la lista, mientras que cdr devuelve el resto de la lista. Por esta razón, a las operaciones a veces se le dan los nombres de first y rest o head y tail (primero y resto o cabeza y cola).