我是一个刚开始学习Common Lisp的新手。我的问题是:我看到一些函数使用谓词语法的方式不同。例如(刚查了一下),有streamp和pathnamep,但也有input-stream-p和output-stream-p。为什么不所有函数都标准化使用* p或*-p?这可能只是历史遗留问题吗?
我是一个刚开始学习Common Lisp的新手。我的问题是:我看到一些函数使用谓词语法的方式不同。例如(刚查了一下),有streamp和pathnamep,但也有input-stream-p和output-stream-p。为什么不所有函数都标准化使用* p或*-p?这可能只是历史遗留问题吗?
P
结尾,而多个单词的谓词名称以 -P
结尾。前者的原因大多是历史因素;后者的原因是像 input-streamp
这样的名称会错误地暗示所询问的问题是“这个输入是否为流”或类似问题。predicatep
和 complex-predicate-p
(或者,作为替代,simplep
和 complex-predicate-p
)。 - Vatinestring-lessp
)。请参阅《通用Lisp语言第二版》(http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node69.html)。 - coredump