演習問題

2章のtail.hs, countbyte.hs, countword.hsを作成。

countbyte.hsとcountword.hsは演習問題なので自分で作りました。作ったのはこれ。

main = do cs <- getContents
          print $ length cs
main = do cs <- getContents
          print $ length $ words cs

countbyteはバイト数を求めるというものなのですが私の環境だとずれますね。改行が1バイトとして扱われているようです(Windows環境のGHCです)。length関数がバイト数を返すのではなくリストの長さを返すのでこうなっているのでしょう。試しにマルチバイト文字でやってみたところ、Shift JISとUTF-8でやってみた限りでは文字数ではなくバイト数になっていました。日本語処理をやろうとするとちょっと面倒になるかもしれないですね。

新しく登場した関数はreverse, words。reverseはリストを逆順にしたものが返ってきます。wordsは文字列を空白類の文字で区切って文字列のリストが返ってきます。