什么是Lisp的向量和列表之间的关系?
答
你被告知什么是准确但可能不会一直是清晰的描述。
Common Lisp中,至少:
* (type-of #(3 4 5))
(SIMPLE-VECTOR 3)
* (atom #(3 4 5))
T
的atom is defined如任何其不是CONS细胞 - 包括载体,类实例,等。所以,是的,一个向量官方认为在Lisp中的“原子”,这就是为什么你被告知你被告知什么。
答
至于其他地方vector
是结构有效的随机访问,通常包装器与一些额外的(自动增长)阵列。列表最适合顺序访问和快速插入。
+1
有趣的是,Common Lisp的有'矢量推extend'它执行自动增长的一部分。在Scheme中,vector是一维数组,它们是固定大小的;你可以自己成长! –
我不会期待这一点。 Emacs lisp具有相同的行为:'(atom [1 2])'产生't'。方案不限定用于原子的测试,但来自Chez方案的'(原子?OBJ)'定义相同的方式,作为对equivelent'(未(对?OBJ))'。因此,Common Lisp不仅仅是这样看待世界。 –
Whaddya知道。接得好。这会教会我在告诉其他人之前阅读文档。我撤回了我的答案。 –