List (1/3)


リスト(list)とは?

S-expression は symbol とリスト構造(list-structured data) からなっています。 ここでは、リスト構造の中でも頻繁に使われる リストについて説明します。

でもそのまえに、DrScheme にOutput Style が write に設定されているか確認してください。

list 命令を使ってリストを作れます。 命令の後に引数として複数の要素を記述すると、引数を評価した値を 要素とするリストを構成します。 リストの構成要素はどんな型のものでも(混ざっていても)かまいません。

また、リストの引数は 1 つでも構いませんし、0 でもかまいません。 要素 0 のリストを空リスト(empty list), ヌルリスト などと呼びます。 R5RS (DrSchemeも)では普通 () と表現されますし、 一部の処理系では、 nil と表現することもあります。

リストに纏わる判断式もふたつ(list?, null?)紹介しておきます。

> (list (+ 1 2) 4 5 6)
(3 4 5 6)                         ; 引数はきちんと評価される
> (list (+ 1 2) 4 'a (list 5 6))  
(3 4 a (5 6))                     ; 型がバラバラでも要素にリストがあってもOK
> (define (color-pair textcolor bgcolor) 
      (list textcolor bgcolor))
> (color-pair 'darkblue 'white)
(darkblue white)                  ; symbol との関係も注意
> (list '+ 1 2)
(+ 1 2)                           ; これはただのシンボルと数字のリスト
> (list 1)
(1)                               ; 要素 1 でもリスト
> (list)
()                                ; 要素 0 でもリスト
> (list? 'a)
#f                                ; symbol は リストではない
> (list? (list))
#t                                ; 空リストを含めてリストはリスト
> (null? (list 1 2))
#f                                ; このリストは空ではない
> (null? (list))
#t                                ; このリストは空ですね

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