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

2 Lispのデータ型

Lispのオブジェクトとは、Lispプログラムによって利用・操作されるデータのことです。ここでの目的において、型またはデータ型とは、取り得るオブジェクトの集合を指します。

すべてのオブジェクトは、少なくとも1つの型に属します。同じ型のオブジェクトは構造が似ており、通常は同一のコンテキストで使用できます。型は重複することがあり、オブジェクトは2つ以上の型に属することもあります。したがって、あるオブジェクトが特定の型に属するかどうかを問うことはできますが、オブジェクトの型について問うことはできません。

Emacsには、いくつかの基本的なオブジェクト型が組み込まれています。他のすべての型の基となるこれらの型は、プリミティブ型と呼ばれます。各オブジェクトは、ただ一つのプリミティブ型に属します。これらの型には、integer、float、cons、symbol、string、vector、hash-table、subr、byte-code function、recordのほか、bufferのように編集に関連するいくつかの特殊な型が含まれます。(編集型を参照してください。)

各プリミティブ型には、オブジェクトがその型のメンバーであるかどうかを判定する対応するLisp関数があります。

Lispが他の多くの言語と異なる点は、オブジェクトが自己型付けされていることです。つまり、各オブジェクトのプリミティブ型は、そのオブジェクト自体に暗黙的に含まれています。例えば、あるオブジェクトがベクトルである場合、それを数値として扱うことはできません。Lispは、それが数値ではなくベクトルであることを認識しています。

ほとんどの言語では、プログラマは各変数のデータ型を宣言する必要があり、その型はコンパイラには認識されますが、データ内には表現されません。Emacs Lispにはこのような型宣言は存在しません。Lispの変数は任意の型の値を保持でき、型も含めて格納した値をそのまま記憶します。(実際には、ごく一部のEmacs Lisp変数は、特定の型の値しか保持できません。値に制限のある変数を参照してください。)

本章では、GNU Emacs Lispにおける各標準型の目的、印刷表現、および読み取り構文について解説します。これらの型の使用方法に関する詳細は、以降の章で説明します。