基本上,标题说明了一切:在Common Lisp中,为什么null谓词被称为null.不nullp(符合其他谓词,如evenp或oddp)?有这个特殊原因吗?
首先,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
谓词NULL很老.它在Common Lisp中称为NULL,希望鼓励将遗留Lisp代码转换为Common Lisp
天哪!它出现在1959年3月的版本中,可能更早的版本中,麦卡锡的原始备忘录(参见此处的pdf第3页:http://dspace.mit.edu/handle/1721.1/6096)作为三个基本谓词之一.
有趣的是,这是在引入汽车和cdr之前.引人入胜 - 列表中的备忘录元素用逗号分隔.