O que significa “meu outro carro é um cdr” significa?
Pergunta
Pode alguém bem versado em lisp explicar essa piada para mim? Eu tenho feito algumas leituras sobre linguagens de programação funcional e saber que o carro / CDR Conteúdo médios de Endereço / Decrement Register mas ainda não realmente compreender o humor.
Solução
Em Lisp, um elemento de lista ligada é chamado de CONS. É uma estrutura de dados com dois elementos, chamado o carro eo CDR por razões históricas. (Alguns programadores Lisp Comum preferem se referir a eles usando as funções de primeira e descanso, enquanto outros, como CAR e CDR porque eles se encaixam bem com as versões pré-compostas, tais como (CADR x) = (CAR (CDR x)).
A piada é uma paródia dos adesivos para carros às vezes você vê em carros antigos batida-up dizendo "Meu outro carro é um Porsche / BMW / etc."
resposta para esta piada sempre foi "My outro carro é um CADR. CDR não é um carro em tudo ".
Outras dicas
Sim, definitivamente uma piada geek.
Os nomes vêm do IBM 704, mas isso não é a piada.
A piada é (mau) trocadilho com "meu outro carro é um ___." Mas a piada é sobre a recursividade.
Quando você laço / manipular / select / invoke / mais em lisp você usa uma combinação de carro (o primeiro elemento da lista) e CDR (o resto da lista) para funções de fazer malabarismos.
Então você tem um carro, mas seu outro carro é a sua cdr, porque você sempre pode obter um carro de um cdr desde o cdr é sempre (em recursão) mais elementos. Pegue? Laugh ainda?
Você provavelmente vai ter que aprender lisp para realmente rir um pouco, ou não. É claro que, até então, você provavelmente vai encontrar-se rindo aleatoriamente, sem motivo aparente, porque:
Lisp faz você Loopy.
// Vindo do Esquema
Esquema tem muito poucas estruturas de dados, um deles é uma tupla: '(first . second)
. Neste caso, car
é o primeiro elemento, e cdr
é o segundo. Esta construção pode ser estendido para criar listas, árvores e outras estruturas.
A piada não é muito engraçado.