2017-08-09 4 views
0

reduceに似ていますが、変数に渡すことができるclojureに存在する関数はありますか?reduce関数に変数を渡す必要性をどのように処理するのですか?

たとえば、自分のフィルタ関数を実装して述語を渡して、コレクション全体をチェックして述語を満たす値を保持するとしたら、reduceを使用している間にこれを行う慣用方法がありますか?

私の推測では、次の操作を行うために、次のようになります。

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

は基本的に私はreduce関数に渡す必要がある値を持つマップのコレクションを作成します。

reduce関数に値を渡す必要があるというユースケースがあることがわかりましたが、適切な関数的な方法で考えていない可能性があります。より慣用的な解決法はありますか?

+3

を減らすことができるように、私は本当に理解していないに聞こえますあなたがしようとしていること。前/後の例をデータで追加できますか? –

答えて

1

は私のフィルタ-FN 3つのアリティの楽しみとすると、部分的

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

を使用しますが、それはまた、あなたがフィルタを使う代わりに

(->> coll 
      (filter pred) 
      (reduce my-fn) 
関連する問題