在History of Lisp中,麦卡锡写道:
翻译的出乎意料的外表倾向于冻结语言的形式,并且一些决定对于“递归函数......”而言相当轻松,后来证明是不幸的。这些包括用于条件表达式的COND表示法,其导致不必要的括号深度,并且使用数字零来表示空列表NIL和真值false。除了鼓励色情编程外,对地址0进行特殊解释也给后来的所有实施带来了困难。
他在说什么?
答案 0 :(得分:20)
...零表示空列表...
因为0==()
自1958年以来一直是色情作品的表情符号。
现在你知道了。
答案 1 :(得分:18)
太多实施细节在更高层次泄漏,即显示太多
答案 2 :(得分:9)
原始的Fortran III规范文档是1958年冬季发布的技术论文,描述了Fortran II语言的一些非常明确的补充,包括......内联汇编。
PDF为here
“添加”的诱人描述如下:
一些禁忌代码是
神秘地说,Fortran-III是never released to the public (see section 5.),但是在悄然消失之前以有限的方式传播。
答案 3 :(得分:6)
也许这是他谈论null references: the billion dollar mistake(T. Hoare)的方式。
答案 4 :(得分:6)
我认为它是关于混合数值和逻辑值,这仍然可以在流行的结构中看到,可能起源于Fortran,如while (1)
。有很多"聪明的"依赖于这样一个事实的C算法,0是假的,而其他每个值都不是。
这同样适用于API调用,例如POSIX或Linux内核,其中一些在失败时返回0,而一些-1(经验法则,何时应用哪个,但它只是民间传说,所以经常被打破)。考虑到事实,在McCarthy那个时代,那些东西还没有发展,你可以看到他的预言"即便在这里。