fork download
  1. (defun qsort (input predicate)
  2. (if input
  3. (let* ((pivot (first input))
  4. (rest (rest input))
  5. (lesser (remove-if-not #'(lambda (x)
  6. (funcall predicate x pivot))
  7. rest))
  8. (greater (remove-if-not #'(lambda (x)
  9. (not (funcall predicate x pivot)))
  10. rest)))
  11. (append (qsort lesser predicate)
  12. (list pivot)
  13. (qsort greater predicate)))
  14. nil))
  15.  
  16. (format t "~a~%" (qsort '(9 8 5 6 7 2 3 1 4) #'<))
Success #stdin #stdout 0s 10472KB
stdin
Standard input is empty
stdout
(1 2 3 4 5 6 7 8 9)