字符串的内部表示

Pet*_*ang 2 common-lisp

在我的理解中,lisp中的所有东西都是原子或一对.

字符串被视为原子吗?

如果字符串只是字符序列或字符串,lisp编译器如何知道?

是什么区别foo,'foo"foo"带来什么影响?

sds*_*sds 5

String是一个Atom

在"原子"被定义为"不配对"的意义上,你的第一个陈述是微不足道的.

因此,字符串绝对是一个原子:

(atom "a")
==> T
Run Code Online (Sandbox Code Playgroud)

string 实际上是定义vectorcharacterS(或它的亚型):

字符串是一个专用向量,其元素是字符类型或字符类型的子类型.当用作对象创建的类型说明符时,字符串表示(向量字符).

什么?收藏是Atom?!!

面对共同的理解,即"集合"不能成为"原子".然而,在Lisp中,数组,向量,哈希表,结构,类对象都是原子.理由(除了古代历史)是implementation(eval)不必查看原子内部 - 它们自我评估(符号除外).

引用

foo是一个 symbol, 'foo相同的(quote foo),"foo"是一个字符串.

进一步阅读

你应该看一下基本的lisp教科书(例如,"Practical Common Lisp""ANSI Common Lisp").