2014-09-21 61 views
2

我經常有truth-list像下面'(nil nil nil t nil t nil nil nil),我想打電話給(reduce #'or truth-list)共口齒不清高階邏輯或功能

然而,這並不工作,我發現or是一個宏。有沒有一種簡單快捷的方法可以讓我像功能一樣工作?我一直在做的事情是通過:(lambda (p q) (or p q))作爲我的功能,但由於我遇到過這麼多次,我敢打賭有一個更好的方法。

感謝您的幫助!

回答

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) 

加成:兩個以上形式將停在第一值。 reduce變體不會。

+1

或(位置 - 如果不是#的空列表) - 確實有很多選擇。 – Xach 2014-09-21 20:08:58

+1

@Xach:'如果不是',怎麼辦?我們不需要索引。 – 2014-09-21 20:39:59

+0

如此多的選擇! – Xach 2014-09-21 21:22:51