<cl> (sort '(1 2 3 4) '>) (4 3 2 1) <cl> (sort '#(4 5 3 2 1) '<) #(1 2 3 4 5) <cl> (sort '((1) (2) (3) (4)) '>) Error: (3) is an illegal argument to <= [1] <cl> :reset <cl> (sort '((1) (2) (3) (4)) '> :key 'car) ((4) (3) (2) (1))たとえば次のような定義が可能.
(defun sort (data pred) (cond ((null data) nil) (t (let ((e (car data)) (left nil) (right nil)) (dolist (x (cdr data)) (if (funcall pred e x) (setq right (cons x right)) (setq left (cons x left)))) (append (sort left pred) (list e) (sort right pred))))))