给定一个嵌套集合,我想将其减少为仅 kv 对,其形式为 [_ D] 其中 D 是整数。例如我想转换如下:
; Start with this ...
{:a {:val 1 :val 2} :b {:val 3 :c {:val 4}} :val 5}
; ... end with this
{:val 1, :val 2, :val 3, :val 4, :val 5}
我使用 postwalk 编写了一个函数,如下所示:
(defn mindwave-values [data]
(let [values (atom {})
integer-walk (fn [x]
(if (map? x)
(doseq [[k v] x]
(if (integer? v) (swap! values assoc k v)))
x))]
(postwalk integer-walk data)
@values))
我很好奇是否可以在不使用可变状态的情况下做到这一点?
编辑原来的功能不太正确。