Shammer's Philosophy

My private adversaria

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を使えば継ぎ足しできるけれども。