检查 lisp 中是否存在某个项目

Check the presence of an item in lisp

为了完成一个练习,我需要检查一个元素是否在列表中。我知道lisp里面有member这个功能,但是我们的老师很严格,不让我们用课程里没讲到的东西

仅使用 condnilcarnot、[=16= 来检查原子是否在列表中的方法是什么? ], +, equal, defun?


编辑: 在 Doseke 的评论之后;这是一个尝试:

(defun presence (list item)
   (cond
      ((atom list) nil)
      ((equal (car list) item) t)
      ((consp list) (presence (cdr list) item))
      (t nil)
      )
   )

编辑:我更改了标题以使其与我的实际问题相匹配

由于您使用的功能有限,我想可能是这样的:

(defun member-2 (x xs)
  (cond ((not xs) nil)
        ((equal x (car xs)) xs)
        (t (member-2 x (cdr xs)))))