比较Lisp中的符号

时间:2017-09-08 19:39:21

标签: lisp

当然我是新手,但为什么不返回T

(eql (third '(0 1 'to 0 1)) 'to)
==> nil

但这确实会返回引用的'to

(third '(0 1 'to 0 1))
'TO

正如您可能猜到的那样,所有比较表单都不起作用,eqeqlequalequalp

1 个答案:

答案 0 :(得分:8)

因为

'TO

不是EQL

TO

第一个是包含两个符号作为元素的列表。它实际上是(QUOTE TO)

第二个只是一个符号。

? (EQL ''TO 'TO)
NIL

请参阅:

? (equal (third '(0 1 'to 0 1)) ''TO)
T

您尝试在文字列表中引用符号,这通常没有意义,因为文字列表不在内部进行评估。