Que signifie «mon autre voiture est un cdr»?

Est-ce que quelqu’un qui connaît bien le lisp peut m’expliquer cette blague? J’ai fait quelques lectures sur les langages de programmation fonctionnels et je sais que le CAR / CDR signifie Contenu du registre d’adresse / décrémentation mais je ne comprends toujours pas vraiment l’humour.

Dans Lisp, un élément de liste liée est appelé CONS. C’est une structure de données avec deux éléments, appelée CAR et CDR pour des raisons historiques. (Certains programmeurs Lisp préfèrent les consulter en utilisant les fonctions FIRST et REST, tandis que d’autres, comme CAR et CDR, s’adaptent bien aux versions précomposées telles que (CADR x) ≡ (CAR (CDR x)).

La blague est une parodie des autocollants que vous voyez parfois sur les vieilles voitures en panne en disant “Mon autre voiture est une Porsche / BMW / etc”.

Ma réponse à cette blague a toujours été “Mon autre CAR est un CADR. Le CDR n’est pas du tout une CAR.”

Oui, certainement une blague de geek.

Les noms viennent de l’IBM 704, mais ce n’est pas la blague.

La blague est un (mauvais) jeu de mots sur “mon autre voiture est un ___”. Mais la plaisanterie concerne la récursivité.

Lorsque vous bouclez / manipulez / sélectionnez / invoquez / plus dans lisp, vous utilisez une combinaison de voiture (le premier élément de la liste) et de cdr (le rest de la liste) pour jongler avec les fonctions.

Donc, vous avez une voiture, mais votre autre voiture est votre cdr car vous pouvez toujours obtenir une voiture à partir d’un cdr puisque le cdr est toujours (en récursivité) plus d’éléments. Trouver? Rire encore?

Vous devrez probablement apprendre à vous marrer un peu, ou pas. Bien sûr, à ce moment-là, vous allez probablement vous retrouver à rire de manière aléatoire sans raison apparente, car:

Lisp vous rend mal à l’aise.

// venant du régime
Scheme a très peu de structures de données, l’une d’elles est un tuple: '(first . second) . Dans ce cas, la car est le premier élément et cdr est le deuxième. Cette construction peut être étendue pour créer des listes, des arbres et d’autres structures.
La blague n’est pas très drôle.