Kann mir jemand, der sich mit Lisp auskennt, diesen Witz erklären? Ich habe einige funktionale Programmiersprachen gelesen und weiß, dass CAR / CDR den Inhalt des Adress- / Dekrementregisters bedeutet, aber ich verstehe den Humor immer noch nicht wirklich.
89
Antworten:
In Lisp wird ein verknüpftes Listenelement als CONS bezeichnet. Es handelt sich um eine Datenstruktur mit zwei Elementen, die aus historischen Gründen als CAR und CDR bezeichnet wird. (Einige Common Lisp-Programmierer bevorzugen es, mit den Funktionen FIRST und REST auf sie zu verweisen, während andere CAR und CDR mögen, weil sie gut zu den vorkomponierten Versionen wie (CADR x) ≡ (CAR (CDR x)) passen.)
Der Witz ist eine Parodie auf die Autoaufkleber, die man manchmal auf verprügelten alten Autos sieht, die sagen: "Mein anderes Auto ist ein Porsche / BMW / etc."
Meine Antwort auf diesen Witz war immer: "Mein anderes CAR ist ein CADR. CDR ist überhaupt kein CAR."
quelle
(rplacd a (car a))
es offensichtlich nicht wird. :) Common LISP ist nicht Haskell. Aber danke für die Erklärung. +1.car
istfirst
". :)Ja, definitiv ein Geek-Witz.
Die Namen stammen von IBM 704, aber das ist kein Scherz.
Der Witz ist (schlechtes) Wortspiel auf "Mein anderes Auto ist ein ___." Aber der Scherz handelt von Rekursion.
Wenn Sie in lisp eine Schleife / Manipulation / Auswahl / Aufruf / mehr ausführen, verwenden Sie eine Kombination aus Auto (das erste Element in der Liste) und CDR (der Rest der Liste), um Funktionen zu jonglieren.
Sie haben also ein Auto, aber Ihr anderes Auto ist Ihre CDR, weil Sie immer ein Auto von einer CDR bekommen können, da die CDR immer (in Rekursion) mehr Elemente enthält. Kapiert? Noch lachen?
Sie müssen wahrscheinlich lisp lernen, um tatsächlich ein bisschen zu kichern oder nicht. Natürlich werden Sie bis dahin wahrscheinlich ohne ersichtlichen Grund zufällig kichern, weil:
Lisp macht dich verrückt.
quelle
// Aus dem Schema kommen Das
Schema hat nur sehr wenige Datenstrukturen, eine davon ist ein Tupel :
'(first . second)
. In diesem Fallcar
ist das erste Element undcdr
ist das zweite. Dieses Konstrukt kann erweitert werden, um Listen, Bäume und andere Strukturen zu erstellen.Der Witz ist nicht sehr lustig.
quelle
(first . second)
. Die Liste'(first second)
besteht aus zwei Tupeln, wie(cons first (cons second null))