Lisp 什么是;我的另一辆车是cdr;什么意思?

Lisp 什么是;我的另一辆车是cdr;什么意思?,lisp,cons,cdr,Lisp,Cons,Cdr,任何精通口齿不清的人能给我解释一下这个笑话吗? 我读过一些函数式编程语言的书,知道CAR/CDR表示地址/减量寄存器的内容,但我还是不太理解其中的幽默 //来自方案 Scheme的数据结构很少,其中一个是元组:”(first.second)。在这种情况下,car是第一个元素,cdr是第二个元素。此构造可以扩展为创建列表、树和其他结构。 这个笑话并不好笑。在Lisp中,链表元素称为CONS。由于历史原因,它是一个包含两个元素的数据结构,称为CAR和CDR。(一些常见的Lisp程序员更喜欢使用FIR

任何精通口齿不清的人能给我解释一下这个笑话吗? 我读过一些函数式编程语言的书,知道CAR/CDR表示地址/减量寄存器的内容,但我还是不太理解其中的幽默

//来自方案
Scheme的数据结构很少,其中一个是元组:
”(first.second)
。在这种情况下,
car
是第一个元素,
cdr
是第二个元素。此构造可以扩展为创建列表、树和其他结构。

这个笑话并不好笑。

在Lisp中,链表元素称为CONS。由于历史原因,它是一个包含两个元素的数据结构,称为CAR和CDR。(一些常见的Lisp程序员更喜欢使用FIRST和REST函数来引用它们,而其他人则喜欢CAR和CDR,因为它们非常适合预合成版本,如(CADR x)≡ (汽车(CDR x))

这个笑话是对你有时在破旧的旧车上看到的保险杠贴纸的模仿,上面写着“我的另一辆车是保时捷/宝马/等等。”


我对这个笑话的理解一直是“我的另一辆车是CADR。CDR根本不是一辆车。”

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

这些名字来自IBM 704,但这不是玩笑

这个笑话是(糟糕的)双关语,“我的另一辆车是一辆”,但里面的笑话是关于递归的

当您在lisp中循环/操纵/选择/调用/更多时,您将使用car(列表中的第一个元素)和cdr(列表的其余部分)的组合来处理函数

所以你有一辆车,但你的另一辆车是你的cdr,因为你总是可以从cdr得到一辆车,因为cdr总是(递归)更多的元素。明白了吗?笑了吗

你可能需要学习lisp才能真正地笑一点,或者不笑。当然,到那时,你可能会发现自己在无缘无故地随机笑,因为:


Lisp让你觉得很无聊。

元组不是“(第一。第二)吗?@Ken-再说一遍,我不知道Lisp,但scheme没有这么复杂的语法。甚至列表都是成对的。事实上,更准确的说法是元组是
(第一。第二)
。列表
(第一秒)
是由两个元组组成的,就像这样:
(cons-first(cons-second-null))
Kobi:我知道Lisp,我不知道你说的“复杂语法”是什么意思。虚线语法是你用Lisp写对的方式,包括Scheme:((第一秒)的cdr是(第二秒),而不是第二秒。所以,现在我们因为被纠正而被否决了?哦,好吧。太阳会发光的。开始“四处策划”一点,然后你就会明白。哈哈哈。这比保险杠贴纸上写着“这个程序员停止所有垃圾收集”要好这个问题链接到from大约半小时后被搁置。这是一个8年前的问题。令人恼火的是,我不能反对搁置状态,但我不喜欢现在搁置的氛围。@i336_uuu,它被关闭是为了防止新答案堵塞审核队列。没有其他搁置原因吗?Opin基于离子的是…错误的。它不应该被保护吗?很好,但不是真的。在
(rplacd a(car a))
之后就不会了Common LISP不是Haskell。但是谢谢你的解释。+1.我不想解释我的笑话,但是…重点是CDR操作不是一个汽车操作;这与值是否通过RPLACD或其他方式等效是一个单独的问题。而且,CDR听起来像一辆跑车的名称,呼应TVR或GT-R,因此可以d读了课文,甚至没有意识到更深层次的LISP-y意思。如果有人想知道,CAR代表注册号地址部分的内容,CDR代表注册号递减部分的内容。谢谢,!不如说“我的另一个
第一个
”:)然后,随着你的最后一口气,另一个游戏开始了。