Critique my Lisp, please

Viewed 1023

I have created a nice little routine:

(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))))

And to use it:

CL-USER> (unzip '(1 2 3 4 5 6))
((2 4 6) (1 3 5))

However, I am keenly aware of my ability to writebotch C++ in any language, and would like some analysis of my unzip for good Common Lisp style.

10 Answers
Related