Что означает "моя другая машина - это cdr"?

Может ли кто-нибудь хорошо разбираться в lisp объяснить эту шутку мне? Я прочитал некоторые функциональные языки программирования и знаю, что CAR/CDR означает содержание репортажа/декремента, но я до сих пор не понимаю юмора.

Ответ 1

В Lisp элемент связанного списка называется CONS. Это структура данных с двумя элементами, называемая CAR и CDR по историческим причинам. (Некоторые обычные программисты Lisp предпочитают ссылаться на них с помощью функций FIRST и REST, в то время как другие, такие как CAR и CDR, потому что они хорошо согласуются с предварительно подобранными версиями, такими как (CADR x) ≡ (CAR (CDR x)).

Шутка - пародия на наклейки с бампером, которые вы иногда видите на избитых старых машинах: "Мой другой автомобиль - Porsche/BMW/и т.д."

Мой ответ в эту шутку всегда был "Мой другой CAR - это CADR. CDR не является CAR вообще".

Ответ 2

Да, определенно шутка-выродка.

Имена взяты из IBM 704, но это не шутка.

Шутка (плохая) каламбура на "мой другой автомобиль - это ___". Но в-шутке речь идет о рекурсии.

Когда вы выполняете цикл/манипулируете/выбираете/вызываете/больше в lisp, вы используете комбинацию автомобиля (первый элемент в списке) и cdr (остальная часть списка), чтобы жонглировать функциями.

Итак, у вас есть машина, но ваш другой автомобиль - ваш cdr, потому что вы всегда можете получить автомобиль из cdr, поскольку cdr всегда (в рекурсии) больше элементов. Возьми? Еще смех?

Вам, вероятно, придется узнать lisp, чтобы на самом деле немного посмеиваться, или нет. Конечно, к тому моменту вы, вероятно, обнаружите, что посмеялись беспорядочно без всякой видимой причины, потому что:

Lisp делает вас зацикленным.

Ответ 3

//Из Схемы
В схеме очень мало структур данных, один из которых - кортеж: '(first . second). В этом случае car - первый элемент, а cdr - второй. Эта конструкция может быть расширена для создания списков, деревьев и других структур.
Шутка не очень забавная.