根据我的理解,lisp中的所有内容都是原子或一对。
字符串是否被视为原子?
lisp编译器如何知道字符串是否仅仅是字符序列或字符串?
一般来说foo
,'foo
和"foo"
之间有什么区别?
答案 0 :(得分:5)
在“原子”被定义为“不配对”的意义上,你的第一个陈述是微不足道的。
因此,字符串绝对是一个原子:
(atom "a")
==> T
班级string
实际上已定义为vector
character
的。{
(或其子类型):
字符串是一个专用向量,其元素的类型为字符 或类型字符的子类型。用作类型说明符时 对象创建,字符串表示(向量字符)。
面对共同的理解,即“集合”不能成为“原子”。
然而,在Lisp中,数组,向量,哈希表,结构,类对象都是原子。
理论基础(除了古代历史)是实现(eval
)不必查看原子内部 - 它们自我评估(符号除外)。
foo
是一个
symbol
,
'foo
为identical to (quote foo)
,"foo"
为字符串。
您应该查看基本的lisp教科书(例如,"Practical Common Lisp"或"ANSI Common Lisp")。