"我的其他车是cdr"是什么意思?

Cap*_*sey 88 lisp cons cdr

任何精通lisp的人都可以向我解释这个笑话吗?我已经对函数式编程语言进行了一些阅读,并且知道CAR/CDR意味着地址/减量寄存器的内容,但我仍然不太了解幽默.

Pet*_*sel 132

在Lisp中,链表元素称为CON​​S.它是一个具有两个元素的数据结构,由于历史原因,称为CAR和CDR.(一些Common Lisp程序员喜欢使用FIRST和REST函数来引用它们,而其他一些程序员喜欢使用CAR和CDR,因为它们非常适合预先组合的版本,例如(CADR x)≡(CAR(CDR x)).

这个笑话模仿你有时在老式汽车上看到的保险杠贴纸,上面写着"我的另一辆车是保时捷/宝马/等等".

这个笑话的回答一直是"我的其他CAR是CADR.CDR根本不是CAR."

  • 如果有人想知道,CAR代表寄存器number_的地址部分的_Contents,CDR代表寄存器number_的递减部分的_Contents.谢谢,[维基百科](https://en.wikipedia.org/wiki/CAR_and_CDR#Etymology)! (4认同)
  • 非常好,但不是真的。显然不会在“(rplacd a (car a))”之后。:) Common LISP 不是 Haskell。但谢谢你的解释。+1。 (2认同)
  • 我不想解释我的笑话,但是……重点是CDR _operation_ 不是CAR _operation_;这与值是否通过 RPLACD 或其他方式等效是一个单独的问题。 (2认同)
  • “我的另一辆‘汽车’是‘第一辆’”怎么样?:) (2认同)

zen*_*zen 32

是的,绝对是一个极客的笑话.

名称来自IBM 704,但这不是笑话.

这个笑话是(坏的)双关语"我的另一辆车是___".但是这个笑话是关于递归的.

当你在lisp中循环/操作/ select/invoke/more时,你可以使用car(列表中的第一个元素)和cdr(列表的其余部分)的组合来兼顾函数.

所以你有一辆车,但你的另一辆车是你的CD,因为你总是可以从cdr获得一辆车,因为cdr总是(在递归中)更多的元素.得到它?笑了吗?

你可能不得不学习口齿不清,实际上有点咯咯笑.当然,到那时,你可能会发现自己随意地轻笑,因为:

Lisp让你循环.

  • 随着你的最后一口气,另一场比赛开始了. (2认同)

Kob*_*obi 14

//来自Scheme
Scheme的数据结构非常少,其中一个是元组:'(first . second).在这种情况下,car是第一个元素,cdr是第二个元素.可以扩展此构造以创建列表,树和其他结构.
这个笑话不是很有趣.

  • 实际上,说元组是"(第一,第二)"会更准确.列表''(第一秒)`由两个元组组成,如下所示:`(cons first(cons second null))` (3认同)
  • 那么,现在我们因为被纠正而被推翻了?那好吧.太阳会闪耀. (2认同)