Обычный Лисп
FIND
не очень хорошая идея:
> (find nil '(nil nil))
NIL
Выше будет означать, что NIL
нет в списке (NIL NIL)
- что неправильно.
Цель FIND
не в том, чтобы проверять членство, а в том, чтобы найти элемент, который удовлетворяет тесту (в приведенном выше примере тестовая функция обычно используется по умолчанию EQL
). FIND
возвращает такой элемент.
Использование MEMBER
:
> (member nil '(nil nil))
(NIL NIL) ; everything non-NIL is true
или POSITION
:
> (numberp (position nil '()))
NIL