2016-10-20 4 views
1

У меня есть функция транспонирования, которая работает на фиксированной арностейтранспонировать список списков 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)) 

Но как я могу обобщать это для п аргументов, так что я мог бы назвать его следующим образом:

(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)) 
Смежные вопросы