将列表项分发给clojure中的变量

时间:2013-02-23 02:47:16

标签: clojure

当我通过此功能时

(into [] 
      (map #(+ %1 %2)
           [1 2]
           [5 6]))

我得到了这个结果:[6 8]

我应该怎样做才能得到这个:[6 7 7 8]同时保留#(+ %1 %2)

在这种情况下,map似乎不是正确的功能。

2 个答案:

答案 0 :(得分:5)

如果需要笛卡尔积,请使用for

user=> (for [x [1 2] y [5 6]]
  #_=>   (+ x y))
(6 7 7 8)

答案 1 :(得分:2)

Alex答案显示,

for是一个选项。也可以使用mapmapcat},如下所示:

user=> (mapcat #(map (partial + %1) [5 6]) [1 2])
(6 7 7 8)