Spis treści | Lekcja 21 | Lekcja 23
Tablice w LISP nie są listami, lecz osobnymi strukturami. Ich notacja poprzedzona jest znakiem #. Tak więc (1 2 3) jest listą składającą sięz 3 elementów, natomiast #(1 2 3) jest jednowymiarową tablicą składającą się również z trzech elementów, identycznych jak poprzednio. W LISP istniej kilka instrukcji pozwalających tworzyć i operować na elementach tablic.
Instrukcja make-array służy do stworzenia pustej tablicy o wybranych wymiarach. Wywołuje się ją w postaci (make-array dimensions), gdzie dimensions jest listą dodatnich wartości całkowitych będących kolejnymi wymiarami macierzy. Porządek macierzy jest wierszowy, tak więc wywołanie (make-array ‘(3 4)) stworzy nam tablicę składającą się z 3 wierszy, każdy po 4 elementy. Można również zainicjować tablicę 0 wymiarową, która może przechowywać tylko jeden element. Tworzone tablice są indeksowane od 0 do n-1, gdzie n jest wymiarem danego stopnia tablicy.
(make-array '(2 3)) => #2a((nil nil nil)(nil nil nil))
(setq tablica (make-array '(2 3)) => #2a((nil nil nil)(nil nil nil)) (aref tablica 0 0) => nil (setf (aref tablica 0 0) 1) => nil (aref tablica 0 0) => 1
Instrukcja array-rank pozwala dowiedzieć się jaki jest stopień (liczba wymiarów) danej tablicy. Ma ona postać (array-rank table).
(array-rank (make-array '(4 5)) => 2
Isntrukcja array-dimension pozwala na zbadanie konkretnego wymiaru zadanej tablic. Wywoływan jest ona w następujący sposób: (array-dimension table axis-number), gdzie table, to badana tablica, zaś axis-number, jest numerem wymiaru, który badamy. Axis-number musi być mniejszy od liczby wymiarów danej tablicy.
(array-dimension (make-array '(4 5)) 0)
=> 4Jeśli instrukcję tę wywołamy nie podając numeru wymiaru, to otrzymamy listę zawierającą poszczególne wymiary badanej tablicy.