Clojure 如何处理向reduce函数传递变量的需要?

Clojure 如何处理向reduce函数传递变量的需要?,clojure,Clojure,clojure中是否存在类似于reduce的函数,但可以传入变量 例如,假设我想实现自己的过滤函数,并传入一个谓词来检查整个集合,并保留满足谓词的值,那么在使用reduce时是否有一种惯用的方法来执行此操作 我想应该做以下几点: (->> coll (map #(:val % :pred pred)) (reduce my-filter-fn {:val 0 :pred pred})) 基本上只是创建一组映射,这些映射具有我需要传递到reduce函数中的值 我发现

clojure中是否存在类似于reduce的函数,但可以传入变量

例如,假设我想实现自己的过滤函数,并传入一个谓词来检查整个集合,并保留满足谓词的值,那么在使用reduce时是否有一种惯用的方法来执行此操作

我想应该做以下几点:

(->> coll 
    (map #(:val % :pred pred))
    (reduce my-filter-fn {:val 0 :pred pred}))
基本上只是创建一组映射,这些映射具有我需要传递到reduce函数中的值


我发现需要频繁地向reduce函数传递值的用例,但这可能是因为我没有以适当的函数方式进行思考。有更惯用的解决方案吗?

让我的过滤器fn成为一个三重的乐趣,并使用部分

   (reduce (partial my-filter-fn pred) 0)
但听起来你也可以用过滤器代替reduce

   (->> coll
           (filter pred)
           (reduce my-fn)

我真的不明白你想做什么。你能用数据添加一个before/after的例子吗?