(defn multiply-xf
[]
(fn [xf]
(let [product (volatile! 1)]
(fn
([] (xf))
([result]
(xf result @product)
(xf result))
([result input]
(let [new-product (* input @product)]
(vreset! product new-product)
(if (zero? new-product)
(do
(println "reduced")
(reduced ...)) <----- ???
result)))))))
这是一个简单的换能器,可以将数字倍增。我想知道reduced
允许提前终止的价值是什么?
我已经尝试过(transient [])
,但这意味着换能器仅适用于矢量。