为什么null谓词称为null,而不是nullp?

Gol*_*den 6 lisp common-lisp

基本上,标题说明了一切:在Common Lisp中,为什么null谓词被称为null.不nullp(符合其他谓词,如evenpoddp)?有这个特殊原因吗?

Mar*_*ark 8

首先,null不是唯一的一个.见atom.

其次,我认为这些谓词是基本的,因此非常古老.我不认为"终止与p"协议是从LISP一开始就引入的.

关于这个主题的有趣信息:

按照惯例,谓词的名称通常以字母p结尾(代表'谓词').Common Lisp在连字符谓词的名称中使用统一约定.如果通过将ap添加到现有名称(例如数据类型的名称)来形成谓词的名称,则在最终p之前放置连字符,并且仅当现有名称中存在连字符时.例如,number会产生numberp,但是standard-char会产生标准char-p.另一方面,如果通过在现有谓词名称的前面添加前缀限定符来形成谓词的名称,则这两个名称用连字符连接,并且在最终p之前是否存在连字符.例如,谓词string-lessp在p之前没有连字符,因为它是lessp的字符串版本(已在Common Lisp中重命名的MacLisp函数).名称string-less-p会错误地暗示它是一个谓词,用于测试一种称为无字符串的对象,名称stringlessp将意味着一个谓词,用于测试某些东西是否没有字符串(是``无字符串'' )!

资料来源:http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node69.html


Ben*_*yde 5

谓词NULL很老.它在Common Lisp中称为NULL,希望鼓励将遗留Lisp代码转换为Common Lisp

天哪!它出现在1959年3月的版本中,可能更早的版本中,麦卡锡的原始备忘录(参见此处的pdf第3页:http://dspace.mit.edu/handle/1721.1/6096)作为三个基本谓词之一.

有趣的是,这是在引入汽车和cdr之前.引人入胜 - 列表中的备忘录元素用逗号分隔.