映射所有元素,保留矢量结构

时间:2019-04-27 11:34:32

标签: clojure

例如,我如何才能最好地实现这一转变:

[[[1 2]] [3 4] [[5] 6]] -> [[[2 3]] [4 5] [[6] 7]]

是否有一种惯用的方法,可以进行任意数量的级别?

1 个答案:

答案 0 :(得分:4)

您可以使用clojure.walk在任意嵌套的结构中递增数字:

(def data [[[1 2]] [3 4] [[5] 6]])
(clojure.walk/postwalk
 #(if (number? %) (inc %) %)
 data)
=> [[[2 3]] [4 5] [[6] 7]]