Lispで配列を扱う
他の言語同様、Lispでも配列を扱える。配列を作成するのは、make-array関数。以下のような引数をとる。
make-array DIMS &KEY ELEMENT-TYPE DISPLACED-INDEX-OFFSET ADJUSTABLE FILL-POINTER INITIAL-ELEMENT INITIAL-CONTENTS
う〜ん、オプションがたくさん出てきた。名前からは用途を推測できないものもある。でも、絶対に必要なのはDIMSくらいだ。たとえば、次のように実行できる。
?(make-array '(3 3)) #2A((0 0 0) (0 0 0) (0 0 0)) ?(make-array '(3 3 3)) #3A(((0 0 0) (0 0 0) (0 0 0)) ((0 0 0) (0 0 0) (0 0 0)) ((0 0 0) (0 0 0) (0 0 0)))
要するに、DIMSというのは、どういった(何次元の)配列を作成するか、ということ。どういう意味なんだろうか(何かの略語?)。
さらに、配列の中でも1次元配列のものは「ベクタ」と呼ばれる。Java でいうところの、java.util.Vector と同じ語源かな・・・リストとベクタの違いは何か・・・う〜む。ベクタは拡張できないのか?リストはappendを使えば継ぎ足しできるけれども。