kotarou1192

人間に擬態中

リストの操作まとめ2(Haskell)

さらにリストを操作します

リストの先頭を返します
>head [3,4,5]
3

リストから先頭を除いたものを返します
>tail [3,4,5]
[4,5]

受け取ったリストから最後の要素のみ返します。
>last [3,4,5]
5

最後の要素以外を返します。
>init [3,4,5]
[3,4]

空リストを渡すとコンパイルは通っちゃうので気を付けましょう。
>head []
Exception

さらにさらにリストを操作してみます

リストの長さを返します。
>length [1,2,3,4,5,6]
6

受け取ったリストの中身があるかどうかを評価します。なければTrueを返します。
>null [2,4,6,8]
False
>null []
True

リストをひっくり返します
>reverse [1,2,3,4,5]
[5,4,3,2,1]

先頭から指定した要素数取り出して返します。
>take 3 [1,2,3,4,5]
[1,2,3]
>take 100 [1,2,3,4,5]
[1,2,3,4,5]
>take 0 [1,2,3,4,5]
[]

先頭から指定した要素数除いて返します。
>drop 3 [1,2,3,4,5]
[4,5]
>drop 0 [1,2,3,4,5]
[1,2,3,4,5]
>drop 100 [1,2,3,4,5]
[]

一番大きな要素を返します/一番小さな要素を返します。
>maximum [2,3,4,9,12]
12
>minimum [9,10,11,5,32]
5

要素をすべて足したもの(和)を返します。
>sum [1,2,3,4,5]
15

要素すべてをかけたもの(積)を返します。
>product [1,2,3,4,5]
120
>product [0,1,2,3,4,5]
0

含まれているかを評価します(``で囲って中置関数にすることが多い)
>elem 4 [1,2,3,4]
True
>elem 5 [1,2,3,4]
False
書き換え(`を'と間違えないように)
4 `elem` [1,2,3,4]

リストの操作まとめ(haskell)

連結
>[2,3] ++ [4,5]
[2,3,4,5]

>1 : [2,3,4,5,6,7,8]
[1,2,3,4,5,6,7,8]

>[1,2] : [3,4,5,6,7,8,9]
error

>[1,2,3,4,5,6,7] ++ [8]
[1,2,3,4,5,6,7,8]

Haskellにおいて[1,2,3,4,5]などのリストは

1:2:3:4:5:[]

の構文糖衣です。 これで上の挙動が理解できると思います。

要素へのアクセス
↓0から数えている

>"HELLO HASKELL" !! 6
'H'
>"HELLO HASKELL" !! 100
Exception
>[0,1,2,3,4,5] !! 1
1

リストの比較

> >= <= <の4つを利用します

[2,1,1,3] < [2,1,1,4]の評価を行った場合の挙動

2 2 →1 1 →1 1 →3 4 あ、4(右辺)のほうが大きいじゃん! True

となります。

>[4,2,9] < [5,3,2]
True

>[] > [3]
False

>[3] > [3]
False

>[3] >= [3]
True

>[3] == [3]
True

>[3] < [3,4]
True

Haskellの関数

Haskellの関数をまとめます

受け取った引数の次のものを返す

succ 引数

実行例
>succ 1
2

なにか順番のついた引数を2つ受け取り、大きいほう(max)または小さいほう(min)を返す

max 引数1 引数2
min 引数1 引数2

実行例
>max 5 6
6
>min 3.13 3.14
3.13
>min (succ 5)(succ 6)
6

2つの引数を受け取り、割り算をする(整数で返す)

div 引数1 引数2

実行例
>div 874 30
29
>874 'div' 30
29