3

Clojureにこれと同等の関数があるかどうか知りたいのですが:

(defn reduce-1 [f val coll]
  (loop [[head & tail] coll
           out val]
      (if head
        (recur tail (f out head tail))
        out)))

これは、通常の'reduceとは異なり、'テールが'fに渡されることに注意してください。

私はこの概念(リストの最初と残りの相互作用を再帰的に収集する)を多用しているので、そのための標準機能があるかどうか疑問に思い始めました。

4

1 に答える 1

2

を使用できますiterate

(defn reduce-with-tail
  [f initial coll]
  (->> (seq coll)
    (iterate next)
    (take-while identity)
    (reduce (fn [initial [head & tail]] (f initial head tail)) initial)))
于 2012-05-30T11:31:48.030 に答える