GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Array-Type.html ・ emacs-doc.conao3.com

2.4.7 配列型

配列は、他の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型を含みます。