Вектора

  В представлении данных часто естественно составлять из объектов данных упорядоченные множества, представленные как вектор. На элементы вектора можно сослаться через их расположение, ничего не зная о самих элементах. С другой стороны, представленные в виде вектора элементы данных можно просто подвергнуть единообразным действиям на основе их содержания, например таким, как удаление определённых элементов из множества, упорядочивание множества по какому-либо критерию и так далее.
  Векторы наподобие списков содержат лисповские объекты, таких как атомы, числа, списки или другие векторы. Внешней формой представления векторов является

  #(x1 x2 … xn) ; n-элементный вектор

  К элементам вектора можно эффективно обращаться напрямую, выбирать и присваивать им значения, задавая номер элемента.

Основные действия с векторами

  Вектор можно создать с помощью функции

  ('vector newobject количество [начальный-элемент])

>('ох set ('vector newobject 4 'ох))
#(ох ох ох ох)

  Также можно создать матрицу, задавая её размерность:

>('m set ('vector newobject '(3 4) 0))
#(#(0 0 0 0) #(0 0 0 0) #(0 0 0 0))

  На новый элемент можно сослаться вызовом:

  (вектор elt n)

>(ох elt 0) ; индексация начинается с нуля
ох

  Элемент матрицы можно получить так:

  (матрица elt x y)

>(m elt 1 2)
0

  Для того чтобы изменить элемент, используется функция присваивания setelt:

>(ох setelt 0 'ой)
#(ой ох ох ох)
>(m setelt 1 2 7)
#(#(0 0 0 0) #(0 0 7 0) #(0 0 0 0))

  Часть вектора можно построить вызовом:

  (вектор subseq начало [конец])

>(ох subseq 0 2)
#(ой ох)

  Кроме этого, для векторов обобщены многие функции, упоминавшиеся в связи с работой над списками, это - size, reverse и remove:

>(#(a b c) reverse)
#(c b a)
>(#(a b b a) remove 'a)
#(b b)