Haskell のお勉強 その5

 文字列の行数を数えるcountlineコマンドの作成。

 まずは、入力用ファイルの作成。
 test_hoge

 hoge0
 hoge1
 hoge2
 hoge3

 次にcountline.hsを作成

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

 
 countline.hsをコンパイル

 $ ghc countline.hs -o countline

 countlineをいう実行ファイルが、生成されるので、
 これを実行

 $./countline < test_hoge

 結果として、

 4

 と表示される。
 
 countline.hsを分解してみる。 

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

 「main = do cs <- getContents」は割愛。

 「print」は、引数として与えられた値を、
 文字列として、標準出力に出力する。
 
 「length」は、リストの要素数を返す関数
 次の処理は、5を表示する。

   main = print $ length [1,2,3,4,5]

 「lines」は、文字列の各行を要素とするリスト(配列)を返す。
 次の処理は、["hoge0","hoge1","hoge2","hoge3"]を表示する。

 main = do cs <- getContent
           print $ lines cs

 「$」は、「$」の右側にある全ての処理を、左側の処理の引数とする。
 「()」をつかうと

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

 は、

  main = do cs <- getContents
          print( length( lines cs ) )

 と書ける。