Функция length возвращает число элементов в списке (или последовательности). Её примерное определение иллюстрирует схему работы над списками:
(defun length1 (lst)
(if (null lst)
0
(1+ (length1 (rest lst)))))
Распространённый недочёт при проверке на пустоту списка:
(= (length lst) 0) вместо (null lst).
Поскольку вычисление длины списка означает его прохождения до самого конца, общее время вычисления вашего кода может вырасти с O(n) до O(n2)!