字符串的内部表示

Internal representation of string

在我的理解中,lisp 中的一切都是一个原子或一对。

字符串算作原子吗?

lisp 编译器如何知道字符串是单纯的字符序列还是字符串?

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

字符串是一个原子

从 "atom" 定义为 "not pair".

的意义上说,您的第一个陈述是微不足道的

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

(atom "a")
==> T

class string 实际上定义vectorcharacter 秒 (或其子类型):

A string is a specialized vector whose elements are of type character or a subtype of type character. When used as a type specifier for object creation, string means (vector character).

什么?集合是一个原子?!!

这与 "collection" 不能是 "atom" 的普遍理解背道而驰。 尽管如此,在 Lisp 中,数组、向量、哈希表、结构、class 对象都是原子。 基本原理(除了古老的历史)是 实现 (eval) 不必查看原子内部 - 它们会自行评估(符号除外)。

引用

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

进一步阅读

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