シーケンスとは、要素の順序付き集合を表すLispオブジェクトのことです。Emacs Lispにおけるシーケンスには、リストと配列の2種類があります。
リストは最も一般的に使用されるシーケンスです。リストには任意の型の要素を格納でき、要素の追加や削除によって長さを簡単に変更できます。リストの詳細については、次のサブセクションを参照してください。
配列は固定長のシーケンスです。さらに、文字列、ベクトル、文字テーブル、boolベクトルに分類されます。ベクトルは任意の型の要素を保持できますが、文字列の要素は文字である必要があり、boolベクトルの要素はtまたはnilである必要があります。文字テーブルはベクトルに似ていますが、任意の有効な文字コードでインデックス付けされる点が異なります。文字列内の文字は、バッファ内の文字と同様にテキストプロパティを持つことができます(テキストプロパティを参照)。一方、ベクトルは、たとえ要素が文字であっても、テキストプロパティをサポートしていません。
リスト、文字列、およびその他の配列型にも、重要な共通点があります。例えば、いずれも長さが l
であり、いずれも 0 から l マイナス 1
までインデックス指定可能な要素を持っています。「シーケンス関数」と呼ばれるいくつかの関数は、あらゆる種類のシーケンスを受け付けます。例えば、length 関数は、あらゆる種類のシーケンスの長さを返します。シーケンス、配列、およびベクトルを参照してください。
シーケンスは読み込むたびに常に新しく生成されるため、一般的に同じシーケンスを2回読み取ることは不可能です。シーケンスの読み取り構文を2回読み取ると、内容が等しい2つのシーケンスが得られます。ただし、1つだけ例外があり、空のリスト
() は常に同じオブジェクト nil
を表します。