(require 'cl) (defun quicksort (xs) (if (null xs) nil (let* ((pivot (car xs)) (smaller (remove-if-not #'(lambda (x) (< x pivot)) (cdr xs))) (greater (remove-if-not #'(lambda (x) (>= x pivot)) (cdr xs)))) (append (quicksort smaller) (list pivot) (quicksort greater)))))