List Lisp,如何从列表中删除元素列表?

List Lisp,如何从列表中删除元素列表?,list,lisp,List,Lisp,是否有内置(无外部库)方法从列表中删除元素列表 (remove-elements '("a" "b" "c" "d") '("b" "c")) 致: 或者您必须编写自己的函数吗?如果是这样的话,这样的函数会是什么样子?如果顺序不重要,请使用以下函数: (set-difference '("a" "b" "c" "d") '("b" "c") :test #'string=) 如果顺序不重要,请使用以下功能: (set-difference '("a" "b" "c" "d") '("b" "

是否有内置(无外部库)方法从列表中删除元素列表

(remove-elements '("a" "b" "c" "d") '("b" "c"))
致:


或者您必须编写自己的函数吗?如果是这样的话,这样的函数会是什么样子?

如果顺序不重要,请使用以下函数:

(set-difference '("a" "b" "c" "d") '("b" "c") :test #'string=)

如果顺序不重要,请使用以下功能:

(set-difference '("a" "b" "c" "d") '("b" "c") :test #'string=)

这看起来不像Lisp语法。这看起来不像Lisp语法。但是,结果并不能保证保持第一个列表的顺序。@davypough True,但在许多需要这样做的情况下,顺序并不重要。好的,但原始问题涉及列表而不是集合。我可能更喜欢(删除if(lambda(elt)(成员elt'(“b”“c”):test#“string=)”(“a”“b”“c”“d”))这样的东西,我添加了一个限定符。如果您想发布另一个答案,请随意。但是,结果不能保证保留第一个列表的顺序。@davypough True,但在许多情况下,您需要这样做,顺序并不重要。好的,但原始问题涉及列表而不是集合。我可能更喜欢(删除if(lambda(elt)(成员elt'(“b”“c”):test#“string=)”(“a”“b”“c”“d”))这样的东西,我添加了一个限定符。如果你想发布另一个答案,请随意。