一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

2.3 リスト処理の基本(1)countlineコマンド 〜 2.8 練習問題

主にリストについての章。リストの記法は、

[ 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