Here's a quick summary of using SORT. For more details, look in Steele or do "clman sort". Basic form: (sort ) is basically a greater-than or less-than function that operates on entries of the type in . Ie it should be a function of 2 arguments, each of which is of the type contained in , and return T if they are in order, NIL otherwise. Examples > (setq Test '(1 2 3 4 3 2 1)) (1 2 3 4 3 2 1) > (setq Test (sort Test #'>)) (4 3 3 2 2 1 1) > (setq Test (sort Test #'<)) (1 1 2 2 3 3 4) > (setq Test2 '((A 1) (B 2) (C 3) (B 2) (A 1))) ((A 1) (B 2) (C 3) (B 2) (A 1)) > (defun Val (Entry) "Return the value part of a (LETTER VALUE) pair" (second Entry)) VAL > (defun Greater-Val? (Entry1 Entry2) "Is the Val part of Entry1 bigger than Val part of Entry2?" (> (Val Entry1) (Val Entry2))) GREATER-VAL? > (setq Test2 (sort Test2 #'Greater-Val?)) ((C 3) (B 2) (B 2) (A 1) (A 1))