Я создал небольшую рутину:
(defun unzip (seq)
"Takes an even-length list and breaks it apart by evens/odd index"
(let ((oddresult '())
(evenresult '()))
(loop for n from 0 to (- (length seq) 1) do
(if (oddp n)
(push (nth n seq) oddresult)
(push (nth n seq) evenresult)))
(list (reverse oddresult) (reverse evenresult))))
И использовать его:
CL-USER> (unzip '(1 2 3 4 5 6))
((2 4 6) (1 3 5))
Однако я остро осознаю свою способность писать botch С++ на любом языке и хотел бы получить некоторый анализ моего unzip
для хорошего общего стиля Lisp.