web-dev-qa-db-fra.com

Que signifie «mon autre voiture est un cdr»?

Quelqu'un qui connaît bien LISP peut-il m'expliquer cette blague? J'ai fait quelques lectures sur les langages de programmation fonctionnels et je sais que CAR/CDR signifie contenu du registre d'adresse/décrémentation, mais je ne comprends toujours pas vraiment l'humour.

88
CaptainCasey

Dans LISP, un élément de liste liée est appelé CONS. Il s'agit d'une structure de données à deux éléments, appelée CAR et CDR pour des raisons historiques. (Certains programmeurs LISP communs préfèrent s'y référer en utilisant les fonctions FIRST et REST, tandis que d'autres aiment CAR et CDR car ils correspondent bien aux versions précomposées telles que (CADR x) ≡ (CAR ( CDR x)).

La blague est une parodie des autocollants pour pare-chocs que vous voyez parfois sur les vieilles voitures battues 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."

132
Peter S. Housel

Oui, certainement une blague de geek.

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

La plaisanterie 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 reste de la liste) pour jongler avec les fonctions.

Vous avez donc 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écursion) plus d'éléments. Trouver? Riez encore?

Vous devrez probablement apprendre LISP pour rire un peu ou non. Bien sûr, d'ici là, vous vous retrouverez probablement à rire au hasard sans raison apparente, car:

LISP vous rend fou.

32
zen

// Venant de Scheme
Le schéma a très peu de structures de données, l'une d'elles est un Tuple: '(first . second). Dans ce cas, car est le premier élément et cdr est le second. 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.

14
Kobi