2013-02-23 28 views
1

變量當我把這個函數傳遞分發列表項目Clojure中

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

我得到這樣的結果:[6 8]

我應該怎麼做來得到這個:[6 7 7 8]同時保持這#(+ %1 %2)

看起來像map在這種情況下不是正確的功能。

回答

5

使用for當你想要一個笛卡爾乘積:

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

for是一種選擇亞歷克斯回答表演。 map也可以使用(與mapcat),如下圖所示:

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

在什麼情況下你會使用'mapcat' /'在map''for'? – leontalbot 2013-02-26 03:13:27

+0

'for'是一個宏,而'mapcat'和'map'是函數,所以你不能在函數組合等許多場景中使用'for' – Ankur 2013-02-26 04:33:44