Common lisp 默认值:成员中的测试不';找不到';(A)在';(A(B))

Common lisp 默认值:成员中的测试不';找不到';(A)在';(A(B)),common-lisp,Common Lisp,搜索列表时使用的默认测试是什么?为什么无法找到列表?我正在使用GNU CLISP 2.49 >(setq X '(A B)) >(member X '((A B))) NIL >(member X (list X)) ((A B)) >(equal (list X) '((A B))) T >(member X '((A B)) :test #'equal) ((A B)) 现在还不清楚在哪里可以找到答案。在更高级别浏览HyperSpec会非常有帮助。虽然前几次可

搜索列表时使用的默认测试是什么?为什么无法找到列表?我正在使用GNU CLISP 2.49

>(setq X '(A B))
>(member X '((A B)))
NIL
>(member X (list X))
((A B))
>(equal (list X) '((A B)))
T
>(member X '((A B)) :test #'equal)
((A B))

现在还不清楚在哪里可以找到答案。在更高级别浏览HyperSpec会非常有帮助。虽然前几次可能会很乏味,但您会从文档中获得很多信息,而且通常是“可重用的”——许多类似问题的答案都在同一个地方

在这种情况下,答案是 ,其中指出:

如果既没有提供:test也没有提供:test not参数,就好像提供了#'eql的:test参数一样

注意:值得注意的是它到底说了什么和没有说什么。这并不是说测试参数的默认值是#eql,也不是说如果测试测试不参数的值是nil,那么就使用#eql。我指出了这一点对于测试,它的作用不大,但是相关的参数通常可以是nil或不提供,在这种情况下,就好像使用了#标识一样。)

它还列出了适用于哪些函数,描述了如何计算test(或test not)函数的参数(基于键参数),以及一些其他有用的信息


当您在本节中时,也值得浏览“向上”“家长”部分和“祖父母”部分,并仔细阅读这些内容。

现在还不清楚在哪里可以找到答案。在更高级别上浏览HyperSpec会非常有帮助。虽然最初几次可能会很乏味,但您会从文档中获得很多信息,而且通常是“可重用的”-许多类似问题的答案都在同一个地方

在这种情况下,答案是 ,其中指出:

如果既没有提供:test也没有提供:test not参数,就好像提供了#'eql的:test参数一样

注意:值得注意的是它到底说了什么和没有说什么。这并不是说测试参数的默认值是#eql,也不是说如果测试测试不参数的值是nil,那么就使用#eql。我指出了这一点对于测试,它的作用不大,但是相关的参数通常可以是nil或不提供,在这种情况下,就好像使用了#标识一样。)

它还列出了适用于哪些函数,描述了如何计算test(或test not)函数的参数(基于键参数),以及一些其他有用的信息

当您在本节中时,还值得“向上”浏览父节和祖父母节,并查看它们。

它默认为
:TEST#EQL
,请参阅。它默认为
:TEST#EQL
,请参阅。