如何处理将变量传递给reduce函数的需求?



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

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

我的猜测是执行以下操作:

(->> coll 
(map #(:val % :pred pred))
(reduce my-filter-fn {:val 0 :pred pred}))

本质上只是创建一个映射集合,这些映射具有我需要传递给reduce函数的值。

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

让 my-filter-fn 成为三 arity 乐趣,并使用部分

(reduce (partial my-filter-fn pred) 0)

但听起来你也可以使用过滤器而不是减少

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

最新更新