2016-10-20 51 views
1

我有一個轉置功能,對於固定arities轉列出的Clojure的列表

(defn transpose [a b c] 
    (map list a b c)) 

(transpose '(1 2 3) '(4 5 6) '(7 8 9)) 
((1 4 7) (2 5 8) (3 6 9)) 

(apply transpose (list '(1 2 3) '(4 5 6) '(7 8 9))) 
((1 4 7) (2 5 8) (3 6 9)) 

但我怎麼能概括這個爲n個參數,所以我如下可以調用它的工作原理:

(transpose '(1 2) '(4 5)) 
(transpose '(1 2 3) '(4 5 6) '(7 8 9)) 
... 

我覺得我需要像下面這樣的東西

(defn transpose [& xs] 
    (apply (map list) xs)) 

但我不能得到它的工作。

回答

1

你是如此接近:

(defn transpose [& xs] 
    (apply map list xs))