リストの操作まとめ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