Next: , Previous: Cons Cells, Up: Lists


5.2 箱の対を連ねたリスト

コンスセルは1対の箱で図示できます。 最初の箱はcarを表し、2番目の箱はcdrを表します。 つぎは、2つのコンスセルから成る 2要素のリスト(tulip lily)を図示したものです。

      ---------------         ---------------
     | car   | cdr   |       | car   | cdr   |
     | tulip |   o---------->| lily  |  nil  |
     |       |       |       |       |       |
      ---------------         ---------------

各1対の箱がコンスセルを表します。 各箱は、Lispオブジェクトを『参照する』、『指す』、『含む』のです。 (これらの用語は同義語。) 最初のコンスセルのcarを表す最初の箱は、 シンボルtulipを含みます。 最初のコンスセルのcdr箱から2番目のコンスセルへ向かう矢印は、 最初のコンスセルのcdrが2番目のコンスセルであることを表します。

同じリストは、つぎのような別の箱記法でも図示できます。

         --- ---      --- ---
        |   |   |--> |   |   |--> nil
         --- ---      --- ---
          |            |
          |            |
           --> tulip    --> lily

つぎは、より複雑で、最初の要素が2要素リストであるような 3要素リストを図示したものです。

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

同じリストを最初の箱記法で表現するとつぎのようになります。

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

コンスセルとリストの入力構文と表示表現、および、 『箱と矢印』によるリストの図示については、See Cons Cell Type