はじめてのHaskell(4)
expand.hs ver2
パターンマッチ
関数の引数に文字リテラルや整数リテラルを指定することで、その値にマッチするときだけ、
関数を実行することができる。
例:
Func 't' = xxxx
Func 'c' = yyyy
Func a = zzzz
't'にマッチしたとき、xxxxを行う。
'c'にマッチしたとき、yyyyを行う。
a(変数:どんな値でも良い)にマッチしたとき、zzzzを行う。
関数
関数 | 概要 |
---|---|
concatMap | (a -> [b]) -> [a] -> [b],concat(リストの結合)+map(各要素へ関数を適用) |
replicate | Int -> a -> [a],aをInt個だけ含むリスト[a]を返す |
replicate関数の例
replicate 5 1 = [1, 1, 1, 1, 1]
replicate 3 't' = "ttt"
replicate 0 True = []
tabStop = 8 main = do cs <- getContents putStr $ expand cs expand :: String -> String expand cs = concatMap expandTab cs expandTab :: Char -> String expandTab '\t' = replicate tabStop ' ' expandTab c = [c]