`(do ()
((not ,test))
,@body))
(defun quick-sort (vec l r)
(let ((i l)
(j r)
(key (svref vec l)))
(if (< i j)
(progn
(while (< i j)
(progn
(while (and (< i j) (> (svref vec j) key)) (decf j))
(if (< i j)
(progn
(setf (svref vec i) (svref vec j))
(incf i)))
(while (and (< i j) (< (svref vec i) key)) (incf i))
(if (< i j)
(progn
(setf (svref vec j) (svref vec i))
(decf j)))))
(setf (svref vec i) key)
(if (> (1- i) l)
(quick-sort vec l (1- i)))
(if (< (1+ i) r)
(quick-sort vec (1+ i) r))))))
(setf vec (vector 1 4 5 2 8 8 3))
(quick-sort vec 0 (1- (length vec)))
(format t "~a" vec)