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