“我的另一辆车是司机”是什么意思?
谁能够熟练地解释这个笑话给我? 我已经做了一些关于函数式编程语言的阅读,并且知道CAR / CDR意味着地址/减量寄存器的内容,但是我还是不太懂幽默。
在Lisp中,链表元素被称为CONS。 这是一个具有两个元素的数据结构,由于历史原因,称为CAR和CDR。 (一些Common Lisp程序员倾向于使用FIRST和REST函数来引用它们,而另一些像CAR和CDR,因为它们适合于诸如(CADR x)≡(CAR(CDR x))的预分解版本。
这个笑话是你偶尔在旧车上看到的保险杠贴纸的模仿,上面写着“我的另一辆车是保时捷/宝马等等”。
我对这个笑话的回应一直是“我的其他CAR是CADR,CDR根本不是CAR”。
是的,绝对是一个怪胎的笑话。
名字来自IBM 704,但这不是玩笑。
这个玩笑是(坏)双关语“我的另一辆车是___”。 但是这个笑话是关于recursion的。
在lisp中循环/操作/select/调用/ more时,使用car(列表中的第一个元素)和cdr(列表的其余部分)来组合函数。
所以你有一辆车,但是你的另一辆车是你的CDR,因为你可以随时从CDR获得一辆车,因为CDR总是(在recursion)更多的元素。 得到它? 笑呢?
你可能不得不学习lisp实际上咯咯笑了一下,或者不。 当然,到那时候,你可能会发现自己没有任何明显的原因,
Lisp让你变得糟糕。
//来自Scheme
Scheme有很less的数据结构,其中一个是元组: '(first . second)
first。second '(first . second)
。 在这种情况下, car
是第一个元素,而cdr
是第二个元素。 这个构造可以被扩展来创build列表,树和其他结构。
这个笑话不是很有趣。