MY-TEST> (flet ((pred (x y) (or (< (first x) (first y)) (and (= (first x) (first y)) (string< (second x) (second y)))))) (let ((list '((1 "spade") (2 "heart") (3 "spade") (4 "heart") (12 "heart") (6 "heart") (2 "spade")))) (stable-sort (copy-list list) #'pred))) ((1 "spade") (2 "heart") (2 "spade") (3 "spade") (4 "heart") (6 "heart") (12 "heart"))