top page > computer > haskell > web_lecture > for_programmer > list_as_data.html
更新日:
文責: 重城良国

データ構造としてのリスト

「くりかえし」の具象化

「くりかえし」としてのリストをさきに見たのはそれが本質だからだ。本質を意識して使うことでリストの不適切な使いかたが避けられる。不適切な使いかたで痛い目にあい反動でリストを軽視するのはHaskell中級者にありがちだ。

データ構造としてのリスト

リストはデータ構造でもある。データをリストという形で保存することができる。しかし、リストを配列と同じように考えると非効率な設計となる。リストの本質が「くりかえし」の具象化であるということを意識する。避けるべき設計のひとつは大きなリストへのランダムアクセスだ。リストへのアクセスは要素の位置nに対してO(n)時間かかる。これは配列のO(1)と比較して効率が悪い。ランダムアクセスの必要な大きな並びにはリストは使わない。

データ構造としてリストを採用するのに適するのは

のときだ。柔軟性やわかりやすさなどのリストの長所が生きてくる。

リストのリテラル表記

短いリストならリテラルとして書く。

[3, 7, 8, 2, 9]

要素の値を先頭から順にコンマで区切って並べ角括弧で囲む。

% ghci
Prelude> [3, 7, 8, 2, 9]
[3,7,8,2,9]
Prelude> [True, False, False, True]
[True,False,False,True]
Prelude> [1 + 2, 3 + 4, 5 + 6]
[3,7,11]

文字列はリストだ

Haskellのデフォルトの文字列は文字のリストだ。デフォルトの文字列を使うときは上記の「リストを使うべき」である条件を考えよう。

Prelude> "hello"
"hello"
Prelude> ['h', 'e', 'l', 'l', 'o']
"hello"

リストの型

リストの型は要素の型を角括弧でかこむ。

is :: [Integer]
is = [23, 15, 4, 9]

bs :: [Bool]
bs = [True, False, False, True]

「空間効率」へもどる 「無限リスト」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics