转置列表清单

时间:2016-10-20 12:06:43

标签: clojure

我有一个适用于固定arities的转置功能

(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 个答案:

答案 0 :(得分:1)

你是如此亲密:

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