List (2/3)


簡単なリスト操作

先程は、リストの作り方を説明しました。 リスト操作命令には色々あるのですが、 ここでは、基本的な操作である car, cdr, cons について説明します。 これらの操作の詳しい説明は、次回行います。

まず、 car について。 これは、リストの先頭要素を取って来るリストです。


> (define sample (list 0 1 2))      ; sample == (0 1 2)
> sample
(0 1 2)
> (car sample)                      ; sample の第一要素は0
0
> (car (list 'a 'b))                ; (a b) というリストの第一要素は a
a
次に、 cdr 。これは、先頭要素を取り除いたリストを 返します。

> (cdr sample)                    ; sample の cdr は (1 2)
(1 2)
> (cdr (cdr sample))              ; そのまた cdr は (2)
(2)
> (cdr (cdr (cdr sample)))        ; そのまた cdr は ()
()
> (cdr (cdr (cdr (cdr sample))))  ; そのまた cdr をすると、() に cdr はないと怒られる
cdr: expects argument of type <pair>; given ()
> (car (cdr sample))
1
そして、 cons は、リストの頭に要素を付け加える操作です。 ちょうど、 car, cdr と逆の操作になります。

> (cons -1 sample)                  ; 先頭に -1 をつけてみる
(-1 0 1 2)
> (cons (car sample) (cdr sample))  ; car 要素と cdr 要素を cons でつなぐ。
(0 1 2)

99.10.5/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp