包含混合向量和双精度的载体的Clojure归约函数



我想对一个包含双精度和向量混合的向量求和。像这样,

[[1 2 1 [1 2 3]] [1 2 4 [1 1 1]]...]

我想总结一下,这样我就会得到这样的东西,

[212 12 444 [11 2 12]]

有没有一种有效的方法可以使用核心 clojure 函数(如 reduce 或 map(来做到这一点?

我认为您希望有一个添加嵌套向量结构的函数,以便(nvadd [1 2 1 [1 2 3]] [1 2 4 [1 1 1]])计算结果为[2 4 5 [2 3 4]]. 然后,您可以使用该函数reduce此类向量的向量。

(defn nvadd [a b]
(mapv #(if (vector? %1)
(nvadd %1 %2)
(+ %1 %2))
a b))

这假定输入格式正确。

最新更新