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

1.1.1 Lispのアトム

Lispでは、これまで「単語」と呼んできたものをアトムと呼びます。この用語は、「分割不能」を意味するatomという単語の歴史的な意味に由来しています。Lispにおいては、リスト内で使用してきた単語は、プログラムの一部として同じ意味を保ちつつ、これ以上小さな部分に分割することはできません。数値や、「+」のような単一文字の記号についても同様です。一方で、古代の原子とは異なり、リストは部分に分割することができます。(car cdr & cons 基本関数を参照してください。)

リストでは、原子同士は空白で区切られます。また、括弧のすぐ隣に配置することも可能です。

厳密に言えば、Lispにおけるリストとは、空白で区切られたアトム、あるいは他のリスト、あるいはその両方を囲む括弧で構成される。リストにはアトムが1つだけ含まれている場合もあれば、全く含まれていない場合もある。何も含まれていないリストは () のように表記され、空リストと呼ばれる。他のあらゆるものとは異なり、空リストはアトムであると同時にリストであるとみなされる。

原子とリストの両方の表記形式は、記号式、あるいはより簡潔にs式と呼ばれる。式という言葉単体では、表記形式、あるいはコンピュータ内部で保持されている原子やリストのいずれかを指すことがある。多くの場合、人々は式という用語を区別なく用いている。(また、多くの文献では、形式という言葉が式の同義語として用いられている。)

ちなみに、我々の宇宙を構成する原子は、不可分であると考えられていた時代にそう名付けられました。しかし、物理的な原子は不可分ではないことが判明しています。原子から一部が分離することもあれば、ほぼ等しい大きさの2つの部分に核分裂することもあります。物理的な原子は、その真の性質が解明される前に、時期尚早に命名されたのです。Lispでは、配列などの特定の種類の原子を部分に分割できますが、その仕組みはリストを分割する仕組みとは異なります。リスト操作に関しては、リストの原子は分割不可能です。

英語と同様に、Lispアトムの構成文字が持つ意味は、それらの文字が単語として持つ意味とは異なります。例えば、南米のナマケモノを指す単語 ‘ai’ は、‘a’ と ‘i’ という2つの単語とは全く異なります。

自然界には多くの種類の原子が存在しますが、Lispにあるのはごくわずかです。例えば、37、511、1729といった数値や、‘+’、‘foo’、‘forward-line’といったシンボルなどが挙げられます。上記の例に挙げた単語は、すべてシンボルです。日常的なLispの会話では、「原子」という言葉はあまり使われません。というのも、プログラマーは通常、自分がどのような種類の原子を扱っているのかについて、より具体的に述べようとするからです。Lispプログラミングの大部分は、リスト内のシンボル(および時には数値)を扱うものです。(ちなみに、前述の3つの単語からなる括弧内の記述は、Lispにおける正当なリストです。なぜなら、これは空白で区切られ、括弧で囲まれた原子(この場合はシンボル)で構成されており、Lisp以外の句読点が一切使われていないからです。)

ダブルクォーテーションで囲まれたテキスト—文や段落であっても—もアトムです。以下に例を示します:

'(this list includes "text between quotation marks.")

Lispでは、句読点や空白を含む引用テキスト全体が単一のアトムとなります。このようなアトムは文字列(「文字の列」の意)と呼ばれ、コンピュータが人間が読めるように出力するメッセージなどに用いられます。文字列は、数値やシンボルとは異なる種類のアトムであり、使い方も異なります。