配列オブジェクトは、配列の要素と呼ばれる複数の他のLispオブジェクトを保持するスロットを持っています。配列の任意の要素には定数時間でアクセスできます。これに対し、リストの要素にアクセスする時間は、その要素のリスト内での位置に比例します。
Emacsでは4種類の配列が定義されており、いずれも1次元です。文字列(文字列型を参照)、ベクトル(ベクトル型を参照)、bool-vector(Bool-Vector型を参照)、およびchar-table(Char-Table型を参照)です。ベクトルとchar-tableは任意の型の要素を保持できますが、文字列は文字のみを、bool-vectorはtとnilのみを保持できます。
4種類すべての配列に共通する特徴は以下の通りです。
aref および aset 関数を用いて参照または変更できます(配列を操作する関数 を参照)。
char-table以外の配列を作成する際は、その長さを指定する必要があります。char-tableの長さは文字コードの範囲によって決まるため、指定することはできません。
原則として、テキスト文字の配列が必要な場合は、文字列かベクトルのいずれかを使用できます。実際には、こうした用途には常に文字列を選択しますが、それには4つの理由があります。
これに対し、キーボード入力文字の配列(キーシーケンスなど)の場合、多くのキーボード入力文字が文字列に収まる範囲外となるため、ベクトルが必要になることがあります。キーシーケンス入力を参照してください。