Lisp 给我们的建议是一个成语

Lisp 给我们的建议是一个成语,lisp,common-lisp,idioms,Lisp,Common Lisp,Idioms,在CommonLisp中,检查元素是否在列表中的更惯用方法是什么? 目前我正在检查“get”是否属于如下列表: (some #'(lambda (x) (string= x "get")) '("get" "update" "delete" "replace")) 如果项目在列表中,Find将返回该项目,否则将返回nil (find 'a '(1 a 2 f)) 请注意,如果要使用不同的搜索条件。例如,以下检查是否有任何符号的名称为“JAM”。我们使用:键来获取符号名,使用:测试,因为我们必

在CommonLisp中,检查元素是否在列表中的更惯用方法是什么? 目前我正在检查“get”是否属于如下列表:

(some #'(lambda (x) (string= x "get")) '("get" "update" "delete" "replace"))

如果项目在列表中,Find将返回该项目,否则将返回nil

(find 'a '(1 a 2 f))
请注意,如果要使用不同的搜索条件。例如,以下检查是否有任何符号的名称为“JAM”。我们使用:键来获取符号名,使用:测试,因为我们必须使用#'equal来比较字符串

(find "JAM" '(a b c jam) :key #'symbol-name :test #'equal)

如果需要在列表中查找
nil
,请使用
member
功能:

[1]> (member nil '(1 nil 2 (nil)))
    (NIL 2 (NIL))
[2]> (member nil '(1 2 (nil)))
    NIL
[3]> (member nil '(1 2 (nil) nil))
   (NIL)
[4]> (member '(nil) '(1 2 (nil) nil))
   NIL
[5]> (member '(nil) '(1 2 (nil) nil) :test #'equal)
   ((NIL) NIL)
[6]> (member "asd" '(1 2 "asd" (nil) nil) :test #'equal)
   ("asd" (NIL) NIL)