Alguém bem versado em ceceio pode me explicar essa piada? Já fiz algumas leituras sobre linguagens de programação funcional e sei que CAR / CDR significa Conteúdo de Registro de Endereço / Decremento, mas ainda não entendi direito o humor.
89
Respostas:
Em Lisp, um elemento de lista vinculada é chamado de CONS. É uma estrutura de dados com dois elementos, denominados CAR e CDR por motivos históricos. (Alguns programadores do Common Lisp preferem referir-se a eles usando as funções FIRST e REST, enquanto outros, como CAR e CDR, porque se adaptam bem às versões pré-compostas, como (CADR x) ≡ (CAR (CDR x)).
A piada é uma paródia dos adesivos que às vezes vemos em carros velhos e surrados dizendo "Meu outro carro é um Porsche / BMW / etc."
Minha resposta a essa piada sempre foi "Meu outro CAR é um CADR. CDR não é um CAR de forma alguma."
fonte
(rplacd a (car a))
manifestamente não. :) Common LISP não é Haskell. Mas obrigado pela explicação. +1.car
éfirst
". :)Sim, definitivamente uma piada geek.
Os nomes vêm do IBM 704, mas essa não é a piada.
A piada é um trocadilho (mau) sobre "meu outro carro é um ___." Mas a piada interna é sobre recursão.
Quando você faz um loop / manipula / seleciona / invoca / mais em lisp, você usa uma combinação de carro (o primeiro elemento da lista) e cdr (o resto da lista) para manipular funções.
Então você tem um carro, mas seu outro carro é seu cdr, porque você sempre pode obter um carro de um cdr, já que o cdr é sempre (em recursão) mais elementos. Pegue? Rir ainda?
Você provavelmente terá que aprender a ceceitar para realmente rir um pouco, ou não. É claro que, a essa altura, você provavelmente se pegará rindo aleatoriamente sem motivo aparente porque:
Lisp deixa você maluco.
fonte
// Vindo do Esquema
Esquema tem muito poucas estruturas de dados, um deles é uma tupla:
'(first . second)
. Nesse caso,car
é o primeiro elemento ecdr
é o segundo. Essa construção pode ser estendida para criar listas, árvores e outras estruturas.A piada não é muito engraçada.
fonte
(first . second)
. A lista'(first second)
é composta por duas tuplas, como esta:(cons first (cons second null))