Какая связь между вектором и списком в Лиспе? - PullRequest
4 голосов
/ 20 сентября 2011

Мне сказали, что в Lisp есть только атом и список в качестве базовой структуры данных. Означает ли это, что вектор в Lisp - это какой-то тип списка? Был ли вектор храниться в виде списка в базовом файле?

Ответы [ 2 ]

4 голосов
/ 21 сентября 2011

То, что вам сказали, было точно , но, возможно, не было ясным описанием.

В Common Lisp, по крайней мере:

* (type-of #(3 4 5))
(SIMPLE-VECTOR 3)

* (atom #(3 4 5))
T

Атом определяется как как что-либо, что не является ячейкой CONS - включая векторы, экземпляры классов и так далее. Так что да, вектор официально считается «атомом» в Лиспе, поэтому вам сказали то, что вам сказали.

2 голосов
/ 20 сентября 2011

Как и везде vector - это структура для эффективного произвольного доступа, обычно это обёртка вокруг массива с некоторыми дополнениями (автоматическое увеличение). Список лучше всего подходит для последовательного доступа и быстрой вставки.

...