3

作为 Lisp 家庭作业的一部分,我将对我找到的任何谓词使用 apply 或 funcall。我的问题(课程作业中未涉及)是:我如何知道何时在我的论点列表中找到了谓词?我已经做了一些基本的谷歌搜索,但到目前为止一无所获。我们被允许使用 Lisp 引用来完成任务——即使是指向一个好的在线资源的指针(可能是一个特定的页面)也会很棒!

4

2 回答 2

1

规范参考是Common Lisp Hyperspec

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

于 2010-03-30T00:07:58.343 回答
1

补充一下 Svante 的回答:我认为没有任何方法可以验证给定函数是否是谓词,因为您可以使用静态类型语言进行验证。大多数 CL 实现确实提供了像 SBCL 这样的自省函数sb-introspect:function-arglist,它允许您检查是否只接受一个参数。不能保证函数的行为是正常的,但总比没有好。

于 2010-03-30T11:35:00.967 回答