Function 带或条件的clojure中的循环

Function 带或条件的clojure中的循环,function,clojure,clojurescript,Function,Clojure,Clojurescript,我试图在clojure中编写一个函数,为向量中的每个值调用一个条件;函数应返回应用于每个值的条件结果的OR。例如,我有一个向量[1 2 3 4]和一个条件(>=x 3),其中x是向量中的一个元素,那么函数应该返回true(类似的[0 1 0 1]应该返回false) 我写了这个方法 (defn contains-value-greater-or-equal-to-three [values] (or (for [x values] (>= x 3))) ) 但是对于向量[1,2

我试图在clojure中编写一个函数,为向量中的每个值调用一个条件;函数应返回应用于每个值的条件结果的OR。例如,我有一个向量[1 2 3 4]和一个条件(>=x 3),其中x是向量中的一个元素,那么函数应该返回true(类似的[0 1 0 1]应该返回false)

我写了这个方法

(defn contains-value-greater-or-equal-to-three [values]
    (or (for [x values] (>= x 3)))
) 
但是对于向量[1,2,3,4],这只会产生(假-假-真);我想要的是应用于这些值的“or”函数


我对函数式编程和clojure很陌生,如果我的想法不对,请告诉我。

看看函数
some
,它将谓词和集合作为参数,如果谓词对集合中的某个项返回true,则返回true

(some #(>= % 3) [1 2 3 4]) ; => true
(some #(>= % 3) [0 1 0 1]) ; => false
方法的问题是
for
返回一系列真/假值,而
需要许多单独的参数。仅给定一个参数,
将返回该参数。您可以做的是
减少
返回的序列,如下所示:

(reduce #(or %1 %2) (for [x values] (>= x 3)))
(由于
是一个宏,而不是一个函数,
(reduce或…)
将不起作用