我有一个向量[1 2 3 4]
。有没有办法添加每一对来获得[(+ 1 2) (+ 2 3) (+ 3 4)]
我试过
(loop [x 0]
(when (< x (count y))
(+ (nth y x) (nth y (+ 1 x)))
(recur (+ x 1))))
但是我得到了一个超出范围的错误IndexOutOfBoundsException clojure.lang.PersistentVector.arrayFor (PersistentVector.java:158)
答案 0 :(得分:5)
(fn [xs]
(map + xs (rest xs)))
答案 1 :(得分:3)
这是一种方式:
(->> [1 2 3 4]
(partition 2 1)
(mapv (partial reduce +)))
;;=> [3 5 7]
我看到的主要问题是你所采用的方法是loop
recur
形式没有累加器。另一个问题是您使用的是when
而不是if
。
答案 2 :(得分:2)
这是一个解构示例:
(->> [1 2 3 4]
(partition 2 1)
(mapv (fn [[f s]] (+ f s))))