在lisp中引用符号的确切含义是什么?

win*_*TTr 1 emacs elisp common-lisp

(message "%s" 'abc)
(message "%s" "abc")
Run Code Online (Sandbox Code Playgroud)

我发现前两个表达式都是相同的结果(在emacs中).虽然我知道这不是一个显示我的问题的属性示例.

你能解释一下引用符号的确切含义吗?引用的符号会返回什么?变量名称或其他内容的字符串表示形式?

Vij*_*hew 5

最简单的答案是:符号在系统中是唯一的,而字符串则不是.以下测试将明确指出:

? (eq 'abc 'abc) 
T 
? (eq "abc" "abc")
NIL
Run Code Online (Sandbox Code Playgroud)

符号被拘禁在系统中唯一的一次.所有进一步的参考都指向同一个对象.换句话说,符号是单例,比较两个符号只是比较指针的问题.所以它更快.字符串不是这种情况.在上面的示例中,字符串的两个实例"abc"是两个对象.