Определить функцию, возвращающую последний элемент - Lisp (229099)

Формулировка задачи:

Необходимо определить функцию, возвращающую последний элемент списка, содержащего не более 3-х элементов. Если не больше 3-х элементов - выводим последний, иначе сообщение 'spisok>3. Моя программа почему-то всегда переходит на ветку, с сообщением, что элементов больше трех. Помогите исправить ошибку
(defun get-last (lst)
(if (>= (length lst) 3) 
  (cond ((null (cdr lst)) (car lst))
        (t (get-last (cdr lst))))) 'spisok>3)

Код к задаче: «Определить функцию, возвращающую последний элемент - Lisp (229099)»

textual
(defun dummy-task (lst &optional (c 0))
  (cond ((>= c 3) "Список слишком длинен")
        ((null (cdr lst)) (car lst))
        (t (dummy-task (cdr lst) (+ c 1))))) 
  
==> DUMMY-TASK
 
(dummy-task '(1 2 3 4 5))
 
==> "Список слишком длинен"
 
(dummy-task '(1 2 3 4))
 
==> "Список слишком длинен"
 
(dummy-task '(1 2 3))
 
==> 3
 
(dummy-task '(1 2))
 
==> 2

9   голосов, оценка 3.556 из 5


СОХРАНИТЬ ССЫЛКУ