リストは、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 |
| | | | | |
-------------- ----------------