mike-neckのブログ

Java or Groovy or Swift or Golang

ふつうのHaskell 2章〜3章

『ふつうのHaskell』の読書メモ


標準の関数まとめ

関数 動作概要
== a -> a -> Bool 第一引数と第二引数を比較した結果を返す
lines String -> [String] 改行文字コードで区切ってリストに変換
words String -> [String] 単語に分解する
length [a] -> Int リストの要素数を返す
reverse [a] -> [a] リストを逆順にしたリストを返す
map (a -> b) -> [a] -> [b] 第二引数のリストの個々の要素に対して第一引数の関数を適用したリストを返す
concat [[a]] -> [a] リストのリストを連結した一つのリストにする
concatMap a -> [b] -> [a] -> [b] リストを返す関数を第二引数のリストに対して適用して、連結したリストを返す
unlines [String] -> String 文字列のリストを改行で連結する
take Int -> [a] -> [a] 第二引数のリストの先頭から第一引数で指定した数の要素を取り出したリストを返す
replicate Int -> a -> [a] 第二引数の要素を第一引数の数だけ含むリストを返す
putStr String -> IO() 引数の文字列を標準出力に出力する
print Show a => a -> IO() 値を文字列化して標準出力に出力するアクションを返す

パターンマッチ

【例】タブ文字を半角ブランクx2に置換する関数

replaceTab :: Char -> String
replaceTab '\t' = replicate 2 ' '
replaceTab c = [c]

【例】map関数の定義

map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs

【修正 2015/05/05 15:56】昨晩眠くて書けなかったところを更新した