Cdr

Définition, exemples et bonnes pratiques

À retenir

  • Le cdr renvoie le reste d'une liste après le premier élément.
  • C'est le compagnon inséparable du car (qui prend le premier élément).
  • Il est au cœur de la manipulation des données dans les langages Lisp, Scheme ou Clojure.

Dans les langages de programmation de la famille Lisp, le cdr est une fonction qui permet de récupérer la "queue" d'une liste, c'est-à-dire tous les éléments sauf le premier. Imaginez une miche de pain coupée en tranches : si la première tranche est le début (le car), le cdr représente tout le reste de la miche.

Étymologie

Le terme est un acronyme anglais historique : Contents of the Decrement part of the Register. Il provient de l'architecture de l'ordinateur IBM 704 utilisé dans les années 1950 pour créer le langage Lisp. Bien que cette origine technique liée aux registres processeurs soit totalement obsolète, le nom est resté par tradition dans l'informatique théorique.

Exemples d'usage

  • Si on applique cdr à la liste (A B C), on obtient la liste (B C).
  • Dans une liste contenant un seul élément comme (X), le cdr renvoie une liste vide.
  • En programmation Scheme, (cdr '(pomme banane cerise)) renverra (banane cerise).

Cas d'usage

Le cdr est indispensable en programmation fonctionnelle pour parcourir des listes de manière récursive. On traite le premier élément, puis on appelle la fonction sur le cdr pour traiter la suite, jusqu'à ce que la liste soit vide.

Bonnes pratiques

Avant d'utiliser cdr, vérifiez toujours que la liste n'est pas vide (NIL). Tenter d'extraire la suite d'une liste qui n'existe pas provoquera généralement une erreur fatale dans le programme.

Synonymes

reste queue tail

Antonymes

car tête head

Conseil

Pour bien comprendre le cdr, essayez de visualiser une liste comme une suite de boîtes emboîtées. Le cdr n'est pas juste une liste d'éléments, c'est un pointeur vers la boîte suivante. Maîtriser ce concept est la première étape pour comprendre comment les ordinateurs gèrent la mémoire de façon dynamique.

Questions fréquentes

Comment prononce-t-on cdr ?

La plupart des programmeurs le prononcent 'could-er' (en anglais).

Pourquoi ne pas l'appeler simplement 'reste' ou 'tail' ?

Certains langages modernes le font (comme Clojure avec 'rest'), mais 'cdr' reste le terme historique standard pour respecter la tradition du Lisp original.