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

2.4.6.1 リストの箱図による描画

リストは、consセルをドミノのように一対の箱で表した図で示すことができます。(Lispリーダーはこのような図を読み取ることはできません。人間とコンピュータの両方が理解できるテキスト表記とは異なり、箱による図は人間にしか理解できません。)この図は、3要素のリスト (rose violet buttercup) を表しています:

    --- ---      --- ---      --- ---
   |   |   |--> |   |   |--> |   |   |--> nil
    --- ---      --- ---      --- ---
     |            |            |
     |            |            |
      --> rose     --> violet   --> buttercup

この図では、各ボックスは任意のLispオブジェクトを保持または参照できるスロットを表しています。2つのボックスの組はそれぞれコンスセルを表します。各矢印は、アトムまたは別のコンスセルのいずれかであるLispオブジェクトへの参照を表しています。

この例では、最初のコンスセルのCARを保持する1番目のボックスは、rose(シンボル)を参照または保持しています。最初のコンスセルのCDRを保持する2番目のボックスは、次のボックスのペアである2番目のコンスセルを参照しています。2番目のコンスセルのCARはvioletであり、そのCDRは3番目のコンスセルです。3番目(かつ最後)のコンスセルのCDRはnilです。

同じリスト (rose violet buttercup) を別の方法でスケッチした図がこちらです:

 ---------------       ----------------       -------------------
| car   | cdr   |     | car    | cdr   |     | car       | cdr   |
| rose  |   o-------->| violet |   o-------->| buttercup |  nil  |
|       |       |     |        |       |     |           |       |
 ---------------       ----------------       -------------------

要素を一つも持たないリストは空リストであり、シンボルnilと同一です。言い換えれば、nilはシンボルであると同時にリストでもあります。

以下に、ボックスと矢印で表したリスト (A ())(あるいは同等に (A nil))を示します:

    --- ---      --- ---
   |   |   |--> |   |   |--> nil
    --- ---      --- ---
     |            |
     |            |
      --> A        --> nil

こちらは、3要素のリスト ((pine needles) oak maple) と、その第1要素が2要素のリストである様子を示した、より複雑な例です:

    --- ---      --- ---      --- ---
   |   |   |--> |   |   |--> |   |   |--> nil
    --- ---      --- ---      --- ---
     |            |            |
     |            |            |
     |             --> oak      --> maple
     |
     |     --- ---      --- ---
      --> |   |   |--> |   |   |--> nil
           --- ---      --- ---
            |            |
            |            |
             --> pine     --> needles

2つ目のボックス表記で示されている同じリストは、次のようになります。

 --------------       --------------       --------------
| car   | cdr  |     | car   | cdr  |     | car   | cdr  |
|   o   |   o------->| oak   |   o------->| maple |  nil |
|   |   |      |     |       |      |     |       |      |
 -- | ---------       --------------       --------------
    |
    |
    |        --------------       ----------------
    |       | car   | cdr  |     | car     | cdr  |
     ------>| pine  |   o------->| needles |  nil |
            |       |      |     |         |      |
             --------------       ----------------