lisp:如何从字符串列表中删除字符串?

lisp:如何从字符串列表中删除字符串?,lisp,Lisp,我在从我使用的字符串列表中删除字符串时遇到问题 (remove "lol" '("lol" "lol2" "lol") 但它返回相同的列表。这里有什么问题?您应该关闭“')” 所以写:(删除“lol”(“lol”“lol2”“lol”))您遇到了试图确定相等性的问题。我相信remove使用eql作为默认的平等性测试工具。不幸的是,两个字符串不是eql,除非它们实际上是同一个对象 尝试: 或者,如果您知道将要测试字符串,可以将string=作为测试函数传递。这只是一个录制错误,列表不会更改我不知

我在从我使用的字符串列表中删除字符串时遇到问题

(remove "lol" '("lol" "lol2" "lol")
但它返回相同的列表。这里有什么问题?

您应该关闭“')”
所以写:(删除“lol”(“lol”“lol2”“lol”)

您遇到了试图确定相等性的问题。我相信
remove
使用
eql
作为默认的平等性测试工具。不幸的是,两个字符串不是
eql
,除非它们实际上是同一个对象

尝试:


或者,如果您知道将要测试字符串,可以将
string=
作为测试函数传递。

这只是一个录制错误,列表不会更改我不知道why@NabilAmen如果工作,你应该考虑接受答案。默认比较是正确的:<代码> EQL < /代码>,但你不应该只相信它,而应该在hyperspec中查找它
Eql
是整个语言中的标准默认比较,除了极少数例外。@Svante我实际上检查了remove是否说了任何具体的东西,但它没有,所以我选择了“嗯,默认值是
Eql
,它没有说其他,但是……”。Vatine:好的,对不起,实际上,您必须遵循
remove
条目中的两个链接,“满足测试”和“满足双参数测试”才能进入第17.2.1章,其中指定了一般默认值。
`(remove "lol" '("lol" "lol2" "lol") :test #'equal)