转换原子的成语?
Idiom for transducing over an atom?
将传感器应用于原子值的惯用方法是什么?
这似乎可以完成工作,但我不确定是否正确(和风格 ^^)。
(let [xf1 (map inc)
xf2 (map #(+ % 2))
xf #(vec (eduction (comp xf2 xf1) %))
a (atom [1 2 3])]
(swap! a xf))
;=> [4 5 6]
(let [xf1 (map inc)
xf2 (map #(* % 2))
foo #(into [] (comp xf2 xf1) %)
a (atom [1 2 3])]
(swap! a foo))
;; => [3 5 7]
有两点需要注意。
comp
在传感器中的工作顺序与正常应用程序相反。也就是说,xf2
在 xf1
之前应用。对于每个元素,它先加倍然后递增。
eduction
returns 一个序列,所以它与原子中的原始值不同。
将传感器应用于原子值的惯用方法是什么?
这似乎可以完成工作,但我不确定是否正确(和风格 ^^)。
(let [xf1 (map inc)
xf2 (map #(+ % 2))
xf #(vec (eduction (comp xf2 xf1) %))
a (atom [1 2 3])]
(swap! a xf))
;=> [4 5 6]
(let [xf1 (map inc)
xf2 (map #(* % 2))
foo #(into [] (comp xf2 xf1) %)
a (atom [1 2 3])]
(swap! a foo))
;; => [3 5 7]
有两点需要注意。
comp
在传感器中的工作顺序与正常应用程序相反。也就是说,xf2
在xf1
之前应用。对于每个元素,它先加倍然后递增。eduction
returns 一个序列,所以它与原子中的原始值不同。