Che cosa significa “la mia altra auto è un cdr” significa?
Domanda
Qualcuno può ben versato in Lisp spiegare questo scherzo per me? Ho fatto qualche lettura sui linguaggi di programmazione funzionali e so che CAR / CDR significa Contenuti di Indirizzo / Decremento Register, ma io ancora non capiscono veramente l'umorismo.
Soluzione
In Lisp, un elemento di lista collegata è chiamato CONS. Si tratta di una struttura di dati con due elementi, denominato CAR e il CDR per ragioni storiche. (Alcuni programmatori Common Lisp preferiscono riferirsi a loro utilizzando il primo e REST funzioni, mentre altri come car e cdr perché si adattano bene con le versioni precomposte quali (CADR x) ≡ (CAR (CDR x)).
Lo scherzo è una parodia dei adesivi a volte si vede su vecchie auto beat-up dicendo: "La mia altra macchina è una Porsche / BMW / etc".
per questa battuta è sempre stata "My altra macchina è un CADR. CDR non è una macchina a tutti ".
Altri suggerimenti
Sì, sicuramente uno scherzo geek.
I nomi provengono dalla IBM 704, ma non è la battuta.
Lo scherzo è (cattivo) gioco di parole su "la mia altra macchina è un ___". Ma l'in-scherzo è di circa ricorsione.
Quando si esegue un ciclo / manipolare / select / Invoke / più in Lisp si utilizza una combinazione di auto (il primo elemento della lista) e cdr (il resto della lista) di destreggiarsi tra le funzioni.
Quindi hai una macchina, ma l'altra macchina è il vostro cdr, perché si può sempre ottenere una macchina da un cdr dal momento che il CDR è sempre (in ricorsione) più elementi. Prendilo? Ridi ancora?
Probabilmente dovrete imparare Lisp a ridacchiare in realtà un po ', oppure no. Naturalmente, a quel punto, probabilmente vi ritroverete ridacchiando in modo casuale per nessun motivo apparente, perché:
Lisp fa Loopy.
// Venendo da Scheme
Schema ha pochissime strutture di dati, uno di loro è una tupla: '(first . second)
. In questo caso, car
è il primo elemento, e cdr
è il secondo. Questo costrutto può essere esteso per creare liste, alberi, e altre strutture.
La battuta non è molto divertente.