リストを操作する関数一覧(Haskell)

4365 ワード

この記事ではリストを操作する関数をまとめました。以下の3つのグループに分けて書いています。

1、出力系の関数(4つ)
2、操作系の便利な関数(8つ)
3、無限系にまつわる関数(3つ)

1、出力系の関数(4つ)

リストにある要素を出力にかけるための基本的な関数です。

関数名 機能
head 先頭の要素を出力
tail 先頭以外の要素を出力
init 最後の要素以外を出力
last 最後の要素を出力

head関数

リストの先頭の要素を出力します。

Prelude> head [1,2,3,4,5]
1

tail関数

リストの先頭以外の要素を出力します。

Prelude> tail [1,2,3,4,5]
[2,3,4,5]

init関数

リストの最後の要素以外を出力します。

Prelude> init [1,2,3,4,5]
[1,2,3,4]

last関数

リストの最後の要素を出力します。

Prelude> last [1,2,3,4,5]
5

2、操作系の便利な関数(8つ)

値を出力するだけでなく、色々な操作・加工ができる関数です。

関数名 機能
length リストの長さを出力
take 先頭から指定された要素数分を出力
drop 先頭から指定された要素数分を削除
reverse リストの要素を逆順に
maximum 最大値を出力
sum リストの合計の値を出力
elem 要素に含まれるかを調べる
null 空かどうかを調べる

length関数

リストの長さを出力します。

Prelude> length [1,2,3,4,5]
5

take関数

先頭から指定された要素数分を出力します。

Prelude> take 3 [1,2,3,4,5]
[1,2,3]

drop関数

先頭から指定された要素数分を削除し、リストを返却します。

Prelude> drop 3 [1,2,3,4,5]
[4,5]

reverse関数

リストの要素を逆順にします。

Prelude> reverse [1,2,3,4,5]
[5,4,3,2,1]

maximum関数

リストの中から最大値を出力します。

Prelude> maximum [1,2,3,4,5]
5

sum関数

リストの合計の値を出力します。

Prelude> sum [1,2,3,4,5]
15

elem関数

指定された数がリストの含まれるか調べます。あった場合はTrue、なかった場合はFalseを返却します。

Prelude> elem 3 [1,2,3,4,5]
True

null関数

リストが空かどうかを調べます。あった場合はTrue、なかった場合はFalseを返却します。

Prelude> null [1,2,3,4,5]
False

3、無限系にまつわる関数(3つ)

Haskellは遅延評価という機能を持っており、無限の長さのリストを作ることも可能です。その中から無限系にまつわる関数をまとめています。

関数名 機能
cycle リストを無限に繰り返す
repeat 要素を1つ無限に繰り返す
replicate repeatの有限版

cycle関数

リスト自体を無限に繰り返します。そのままだと永遠に出力されるので、take関数で初めのいくつかだけを取り出します。

Prelude> take 10 $ cycle [1,2,3]
[1,2,3,1,2,3,1,2,3,1]

repeat関数

要素を1つリストとして無限に出力します。先ほどと同じように永遠に繰り返すので、take関数で出力する回数を指定します。

Prelude> take 10 $ repeat 3
[3,3,3,3,3,3,3,3,3,3]

replicate関数

要素を1つ無限に繰り返します。ただしreplicate関数は出力する回数を指定する必要があります。こちらでは3という数値を10回出力にかけています。

Prelude> replicate 10 3
[3,3,3,3,3,3,3,3,3,3]