2016-12-01 48 views
2

如果我有兩個序列是否有一些功能將多個序列組合在一個函數上?

(let [v1 '(1 2 3 4) 
     v2 '(2 4 6 8)] 
    ...) 

有通過函數到單一載體結合他們的一些方法,像:

(combine #(* % %2) [1 2 3 4] [2 4 6 8]) => [2 8 18 32] 

的「映射」功能將一個參數每個序列「組合」,所以用3個序列來調用它需要3元函數。 如果任何一個序列用盡了元素,它應該停止或重複較短的一個,沒關係。

回答

3

您可以使用此功能map(從clojure.core)。

map帶一個函數作爲第一個參數,並且任何數量作爲它的後續參數序列。它通過從每個輸入序列中獲取一個元素並將該元素集合作爲參數應用來構造輸出的每個元素,就像您需要的一樣。

所以,你的例子將成爲:

(map * [1 2 3 4] [2 4 6 8]) 
相關問題