Haskell 最初のn歩 :関数を調べる
少しずつHaskell勉強中。
調べた関数
関数名 |
定義説明 |
例 |
id |
入力(引数)をそのまま出力する https://hackage.haskell.org/package/base-4.7.0.0/docs/Prelude.html#v:id id :: a -> a |
Prelude> id 3 3 |
map |
よく使う高階関数(high-order-function) https://hackage.haskell.org/package/base-4.7.0.0/docs/Prelude.html#v:map 第1引数:関数 (a -> b) 第2引数:リスト [a] 結果:リスト [b] [a] 入力⇒ 処理(a -> b ) 出力⇒[b] 関数(a->b)を使って[a]を[b]に変換する。 --------------- map :: (a -> b) -> [a] -> [b]
|
Prelude> map id [10,20,30] [10,20,30] |
zip |
ふたつのリストを合成したタプルのリストを生成する https://hackage.haskell.org/package/base-4.7.0.0/docs/src/GHC-List.html#zip Prelude> :t zip zip :: [a] -> [b] -> [(a, b)] |
Prelude> zip [0..] [10,20,30,40,50] [(0,10),(1,20),(2,30),(3,40),(4,50)] |
foldl |
<reduce> https://hackage.haskell.org/package/base-4.7.0.0/docs/src/GHC-List.html#foldl リストの要素を1つの値に集約する。 方法は、関数を指定する。 (畳み込み) 第1引数:演算子 第2引数:初期値 第3引数:リスト Prelude> :t foldl foldl :: (b -> a -> b) -> b -> [a] -> b |
Prelude> foldl (+) 0 [10,20,30,40] 100 |
ラインタイムエラーを生成する (クラッシュさせる) https://hackage.haskell.org/package/base-4.7.0.0/docs/src/GHC-List.html#head Prelude> :t error error :: [Char] -> a Prelude>head *** Exception: Prelude.head: empty list ↑errorによる出力 |
head :: [a] -> a errorEmptyList :: String -> a prel_list_str :: String |