diff --git a/stdlib/stdlib.lsp b/stdlib/stdlib.lsp index 472fbf9..a9be27e 100644 --- a/stdlib/stdlib.lsp +++ b/stdlib/stdlib.lsp @@ -61,18 +61,23 @@ ; quicksort -(defun quick-sort (l) +(defun quick-sort-by (l cmp) (if (<= (len l) 1) l (do (define pivot (first l)) (+ - (quick-sort (filter (lambda (n) (> pivot n)) l)) + (quick-sort-by (filter (lambda (n) (cmp pivot n)) l) cmp) (list pivot) - (quick-sort (tail (filter (lambda (n) (<= pivot n)) l))) + (quick-sort-by (tail (filter (lambda (n) (not (cmp pivot n))) l)) cmp) )) )) +(defun quick-sort (l) + (quick-sort-by l (lambda (a b) (> a b)))) + + + ; from list of lists creates csv string ; (print (make-csv '(("r1c1" "r1c2") ("r2c1" "r2c2"))))