common-lisp高阶逻辑或函数

时间:2014-09-21 19:37:57

标签: common-lisp logical-operators higher-order-functions

我经常有以下truth-list的{​​{1}},我想致电'(nil nil nil t nil t nil nil nil)

然而,这不起作用,我发现(reduce #'or truth-list)是一个宏。有没有一种快速简便的方法可以让它像功能一样工作?我一直在做的是传递:or作为我的功能,但由于我遇到过这么多次,我打赌有更好的方法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

不是真的。你真的需要这个功能。只需定义BINARY-OR函数即可。如果您经常使用它,那么只需将其添加到您的代码中即可。

备选方案:

(some #'identity '(nil nil nil t nil t nil nil nil))

(loop for i in '(nil nil nil t nil t nil nil nil) thereis i)

奖励:以上两种形式都将停在第一个 true 值。 reduce变种赢了。