配列は、他のLispオブジェクトを保持または参照するための任意の数のスロットが、メモリ上の連続した領域に配置されて構成されています。配列の任意の要素へのアクセスには、ほぼ同程度の時間がかかります。これに対し、リストの要素へのアクセスには、リスト内での要素の位置に比例した時間がかかります。(リストの末尾にある要素は、先頭にある要素よりもアクセスに時間がかかります。)
Emacsでは、文字列、ベクトル、bool-vector、char-tableの4種類の配列が定義されています。
文字列は文字の配列であり、ベクトルは任意のオブジェクトの配列です。bool型ベクトルにはtまたはnilのみが格納可能です。こうした配列の長さは、システムアーキテクチャの制限や利用可能なメモリに応じて、最大のfixnumまで任意に設定できます。文字テーブルは、任意の有効な文字コードをインデックスとする疎な配列であり、任意のオブジェクトを格納できます。
配列の最初の要素のインデックスは0、2番目の要素は1、といった具合になります。これをゼロオリジンインデックスと呼びます。例えば、4つの要素を持つ配列のインデックスは0、1、2、 3となります。取り得る最大のインデックス値は、配列の長さより1小さい値です。一度配列が作成されると、その長さは固定されます。
Emacs Lispの配列はすべて1次元です。(他のほとんどのプログラミング言語では多次元配列がサポートされていますが、必須ではありません。入れ子になった1次元配列を使えば同様の効果が得られます。)配列の種類ごとに独自の読み込み構文があります。詳細は以降のセクションを参照してください。
配列型はシーケンス型の部分集合であり、文字列型、ベクトル型、bool-vector型、およびchar-table型を含みます。