检查 lisp 中是否存在某个项目
Check the presence of an item in lisp
为了完成一个练习,我需要检查一个元素是否在列表中。我知道lisp里面有member
这个功能,但是我们的老师很严格,不让我们用课程里没讲到的东西
仅使用 cond
、nil
、car
、not
、[=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)))))
为了完成一个练习,我需要检查一个元素是否在列表中。我知道lisp里面有member
这个功能,但是我们的老师很严格,不让我们用课程里没讲到的东西
仅使用 cond
、nil
、car
、not
、[=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)))))