主にリストについての章。リストの記法は、
[ 1, 2, 3 ]
という感じ。1つのリスト中には、異なる型の値を入れる事は出来ない。
リストを扱う関数もいくつか紹介された。
- length xs
- リスト中の要素数を返す
- reverse xs
- リストを反転させる
- take n xs
- 先頭からn個を抽出
関数呼び出しに使う$演算子が出てきた。
print $ take 3 $ reverse [ 1, 2, 3, 4, 5 ]
というのは、
print (take 3 (reverse [ 1, 2, 3, 4, 5 ]))
と評価される。
練習問題1
countbyte cs = (length cs) + (length $ lines cs) main = do cs <- getContents print $ countbyte cs
Windowsで実行している為なのか、\r\nが内部で\nとして扱われてしまうようで、length $ lines csが無いと行数分少ない結果が出てしまった。なので、その分は補っている。改行コードが\r\nでない処理系では、おそらくこういう余計な事はしなくてもいいんだと思う。
練習問題2
countword cs = length $ words cs main = do cs <- getContents print $ countword cs