Начните с определения функции, которая определяет, будет ли один список меньше другого. В следующем примере предполагается, что списки могут содержать только цифры:
(defun list< (a b)
(cond ((null a) (not (null b)))
((null b) nil)
((= (first a) (first b)) (list< (rest a) (rest b)))
(t (< (first a) (first b))) ))
Вооружившись этой функцией, вы теперь можете сортировать список списков.
(sort (copy-seq list) #'list<)