リストの生成
a = [2, 4, 6, 8, 10]
レンジ
レンジ表記を使うと、等差数列程度であれば簡単に定義することができる。
ghci>[1..5]
[1, 2, 3, 4, 5]
ghci>['a'..'c']
"abc"
ghci>[1, 3..10]
[1, 3, 5, 7, 9]
レンジを使えば無限リストも作れる。Haskellには遅延評価の仕組みがあるので、無限リストの要素が必要になった時に初めて評価される。
ghci>[1, 2..]
cycle, repeat, replicate
上記関数は、繰り返しを含むリストの定義に使われる。
ghci>cycle [1, 2, 3]
[1, 2, 3, 1, 2, 3, .....]
ghci>repeat 3
[3, 3, 3, 3, ....]
ghci>replicate 3 10
[10, 10, 10]
リストの連結
++演算子
上記演算子で2つのリストを結合できる
ghci> [1, 2, 3] ++ [4, 5, 6]
[1, 2, 3, 4, 5, 6]
:演算子
上記演算子で先頭に要素を追加できる
ghci> 1 : [2, 3, 4, 5]
[1, 2, 3, 4, 5]
リスト要素へのアクセス
!!演算子
上記演算子で、インデックスを使用して要素にアクセスできる。
ghci> [1, 3, 5, 7, 9] !! 3
5
リストの比較
数値と同様に、等号や不等号を用いて比較判定ができる。不等号は辞書順を基準に判定する。
文字列の長さ
***length関数
ghci>length [2, 4, 6, 8, 10]
5
要素、部分リストの抽出
head, tail, init, last
上記演算子はよく使われるリスト関数で、以下のように要素または部分リストを抽出できる([1, 2, 3, 4, 5]に対して適用)。
| head |
1 |
| tail |
[2, 3, 4, 5] |
| init |
[1, 2, 3, 4] |
| last |
5 |
take, drop
takeは先頭から指定した要素数のリストを取得し、dropは先頭から指定した要素数を除外したリストを取得する
| take 3 [1, 2, 3, 4, 5] |
[1, 2, 3] |
| drop 3 [1, 2, 3, 4, 5] |
[4, 5] |
反転
reverse関数
上記関数でリストの順番を入れ替えることができる
判定関数
null関数
上記演算子でリストが空かを調べられる
ghci> null []
True
elem関数
上記演算子で要素がリストにあるかを調べられる。
慣例的に、中置演算子として使われることが多い
ghci> 4 `elem` [2, 4, 6, 8]
True
最大値、最小値
maximum, minimum関数
上記関数で、リスト内の最大値・最小値を抽出できる
要素全ての演算
sum, product
上記演算子で、リストの全ての要素を加算または乗算できる
最終更新:2016年05月03日 11:27