字符串的内部表示

时间:2015-01-11 04:26:32

标签: common-lisp

根据我的理解,lisp中的所有内容都是原子或一对。

字符串是否被视为原子?

lisp编译器如何知道字符串是否仅仅是字符序列或字符串?

一般来说foo'foo"foo"之间有什么区别?

1 个答案:

答案 0 :(得分:5)

String是Atom

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

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

(atom "a")
==> T

班级string 实际上已定义vector character的。{ (或其子类型):

  

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

什么?收集是Atom?!!

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

引用

foo是一个 symbol'fooidentical to (quote foo)"foo"为字符串。

进一步阅读

您应该查看基本的lisp教科书(例如,"Practical Common Lisp""ANSI Common Lisp")。