Lisp:确定列表是否包含谓词

时间:2010-03-29 23:57:30

标签: lisp predicate

作为Lisp中的家庭作业的一部分,我将对我发现的任何谓词使用apply或funcall。我的问题(在课程中发现)是:我怎么知道我什么时候在我的参数列表中找到了一个谓词?我做了一些基本的谷歌搜索,到目前为止没有任何结果。我们被允许使用Lisp引用进行赋值 - 即使指向一个好的在线资源(也许是一个特定页面)的指针就会很棒!

2 个答案:

答案 0 :(得分:1)

规范参考是Common Lisp Hyperspec

我不知道你的作业究竟是什么,但是你可以根据可能的谓词列表检查每个参数,或者可以确定你的参数是否是一个函数(functionp),如果你可以认为传入的所有函数都是谓词。

答案 1 :(得分:1)

要添加到Svante的答案:我认为没有任何方法可以验证给定函数是否是谓词,因为您可以使用静态类型语言。大多数CL实现都提供内省函数,如SBCL的sb-introspect:function-arglist,它允许您检查是否只接受一个参数。这并不能保证函数的行为是理智的,但它可能总比没有好。