Я работаю над рекурсивной функцией, которая принимает список и значение ex: 'b' (a. B) и возвращает nil, если не найдено, и t, если найдено. моя проблема в строке (cond ((eq A (car L)) t), кажется, что проверка этого условия даже после того, как (cond ((и (atom L (eq AL)) t) возвращается). Я подСоздается впечатление, что если это условие выполнено, выполнение прекращается и функция возвращается. Любой способ это исправить? Кроме того, я могу использовать только примитивные функции defun cond cons операторы cdr +, -, <и> null eq listp atom symbolp
;test cases
(checkInner 'b '(a . b))
(checkInner 'f '(c e f))
(checkInner 'b '(b))
;function
(defun checkInner(A L)
(cond ((and (atom L) (eq A L)) t)
)
(cond ((or (atom L) (eq A L)) nil)
)
(cond ((eq A (car L)) t)
(t (checkInner A (cdr L))
)
)
)