【发布时间】:2015-08-15 06:15:06
【问题描述】:
我有一个嵌套的 reduce 函数,我用一个名为 counter 的原子来在每次满足条件时增加一个计数
(defrecord TreeNode [val left right])
(defn build-tree [node xs]
(let [counter (atom 1)]
(reduce (fn [t x]
(reduce (fn [t l]
(if-not (= (:val l) -1)
(let [next-branch (nth xs @counter)]
(swap! counter inc)
;; do stuff
) t)
)t (map-indexed
(fn [idx itm]
(let [side (if (= 0 idx) :left :right)]
{:side side :index idx :val itm})) x))) node xs)))
我不喜欢在函数中使用可变 ref。有没有一种方法可以在不使用 ref 的情况下实现相同的行为?
【问题讨论】:
标签: clojure