Czy ktoś dobrze zorientowany w seplenienie może mi wyjaśnić ten żart? Czytałem trochę o funkcjonalnych językach programowania i wiem, że CAR / CDR oznacza zawartość rejestru adresu / dekrementacji, ale nadal nie rozumiem tego humoru.
Czy ktoś dobrze zorientowany w seplenienie może mi wyjaśnić ten żart? Czytałem trochę o funkcjonalnych językach programowania i wiem, że CAR / CDR oznacza zawartość rejestru adresu / dekrementacji, ale nadal nie rozumiem tego humoru.
Odpowiedzi:
W Lispie połączony element listy nazywany jest CONS. Jest to struktura danych z dwoma elementami, zwana CAR i CDR ze względów historycznych. (Niektórzy programiści Common Lisp wolą odwoływać się do nich używając funkcji FIRST i REST, podczas gdy inni lubią CAR i CDR, ponieważ dobrze pasują do wstępnie skomponowanych wersji, takich jak (CADR x) ≡ (CAR (CDR x)).
Żart jest parodią naklejek na zderzakach, które czasem widzisz na zniszczonych starych samochodach i mówią: „Mój drugi samochód to Porsche / BMW / itd.”.
Moja odpowiedź na ten żart zawsze brzmiała: „Mój drugi SAMOCHÓD to CADR. CDR wcale nie jest SAMOCHODEM”.
(rplacd a (car a))
tym, jak oczywiście nie będzie. :) Zwykły LISP to nie Haskell. Ale dzięki za wyjaśnienie. +1.
car
jest first
”. :)
Tak, zdecydowanie żart dla maniaków.
Nazwy pochodzą z IBM 704, ale to nie jest żart.
Żart to (kiepska) gra słów „mój drugi samochód to ___”. Ale żart dotyczy rekurencji.
Kiedy wykonujesz pętlę / manipulujesz / wybierasz / wywołujesz / more w lisp, używasz kombinacji car (pierwszy element na liście) i cdr (reszta listy) do żonglowania funkcjami.
Więc masz samochód, ale twój drugi samochód jest twoim cdr, ponieważ zawsze możesz uzyskać samochód z cdr, ponieważ cdr jest zawsze (w rekurencji) więcej elementów. Zdobyć? Śmiej się jeszcze?
Prawdopodobnie będziesz musiał nauczyć się seplenienie, aby trochę chichotać, lub nie. Oczywiście do tego czasu prawdopodobnie będziesz chichotać losowo bez wyraźnego powodu, ponieważ:
Lisp sprawia, że jesteś oszołomiony.
// Jadąc ze schematu
Scheme ma bardzo niewiele struktur danych, jednym z nich jest krotka: '(first . second)
. W tym przypadku car
jest to pierwszy element i cdr
drugi. Ta konstrukcja może zostać rozszerzona o tworzenie list, drzew i innych struktur.
Żart nie jest zbyt zabawny.
(first . second)
. Lista '(first second)
składa się z dwóch krotek, na przykład:(cons first (cons second null))