Quelqu'un peut-il bien 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.
89
Réponses:
En Lisp, un élément de liste chaînée est appelé un CONS. Il s'agit d'une structure de données à deux éléments, appelée CAR et CDR pour des raisons historiques. (Certains programmeurs Common Lisp 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 de pare-chocs que vous voyez parfois sur de 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 un CAR".
la source
(rplacd a (car a))
cela, manifestement pas. :) Common LISP n'est pas Haskell. Mais merci pour l'explication. +1.car
estfirst
". :)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 une ___". Mais la blague concerne la récursivité.
Lorsque vous bouclez / manipulez / sélectionnez / invoquez / plus dans lisp, vous utilisez une combinaison de car (le premier élément de la liste) et de cdr (le reste 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 d'un cdr puisque le cdr est toujours (en récursivité) plus d'éléments. Tu piges? Riez encore?
Vous devrez probablement apprendre le lisp pour rire un peu, ou pas. Bien sûr, d'ici là, vous vous retrouverez probablement à rire au hasard sans raison apparente parce que:
Lisp vous rend fou.
la source
// venant de schéma
système a très peu de structures de données, l' un d'eux est un tuple:
'(first . second)
. Dans ce cas,car
est le premier élément, etcdr
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.
la source
(first . second)
. La liste'(first second)
est composée de deux tuples, comme ceci:(cons first (cons second null))