Vector 包含混合向量和对偶向量的Clojure约化函数

Vector 包含混合向量和对偶向量的Clojure约化函数,vector,clojure,reduce,Vector,Clojure,Reduce,我想求一个向量的和,这个向量包含双精度和向量的混合。大概 [1 2 1[1 2 3][1 2 4[1 1]…] 我想求和,这样我可以得到 [212 12 444[11 2 12]] 使用诸如reduce或map之类的核心clojure函数是否有一种有效的方法来实现这一点 我认为您需要一个添加嵌套向量结构的函数,以便nvadd[1 2 1[1 2 3]][1 2 4[1 1 1]]计算为[2 4 5[2 3 4]]。然后你可以用这个函数来减少这些向量的向量 (defn nvadd [a b]

我想求一个向量的和,这个向量包含双精度和向量的混合。大概

[1 2 1[1 2 3][1 2 4[1 1]…]

我想求和,这样我可以得到

[212 12 444[11 2 12]]

使用诸如reduce或map之类的核心clojure函数是否有一种有效的方法来实现这一点

我认为您需要一个添加嵌套向量结构的函数,以便nvadd[1 2 1[1 2 3]][1 2 4[1 1 1]]计算为[2 4 5[2 3 4]]。然后你可以用这个函数来减少这些向量的向量

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

这假设输入格式正确。

您是如何从[1 2 1[1 2 3]]到212的?顺便说一句,请确保添加您已经尝试过的代码。因为这个例子已经有点不清楚了,所以如果您编写一些测试用例,它确实会有所帮助。结合您的尝试,我们有一个失败的场景,并且可以从那里改进。这比我提出的解决方案更加巧妙,谢谢!