Вы можете использовать встроенную функцию положения, которая будет возвращать индекс числа, если оно есть в списке:
(position 1 '(5 4 3 2 1))
Если вы хотите определить свою собственную функцию:
CL-USER> (defun our-member(obj lst)
(if(zerop (length lst))
nil
(if(equal(car lst)obj)
T
(our-member obj (cdr lst)))))
OUR-MEMBER
CL-USER> (our-member 1 '(5 4 3 2 1))
T
CL-USER> (our-member 99 '(1 2 3 4 5))
NIL
Мы можем создать функцию под названием «наш член», которая будет принимать объект (в вашем случае число) и список (в вашем случае список чисел) в качестве аргумента.В этой ситуации наш «базовый случай» будет состоять в том, равна ли длина списка нулю или нет.Если это так, и мы до сих пор не нашли соответствия, мы вернем ноль.В противном случае мы проверим, равна ли машина списка (первый элемент в списке) объекту, который мы передали.Если это так, мы вернем T (true).Однако, если это не так, мы будем снова вызывать функцию, передавая объект и cdr списка (все, что находится за машиной списка), снова до тех пор, пока в списке не останется элементов.Как видите, первый пример вызова этой функции возвращает T, а второй пример вызова возвращает NIL.
Что делает эту полезную функцию хорошим примером, так это то, что она, по сути, показывает вам, как работает функция-член, и что происходит внутри.