Haskell のお勉強 その4

 catコマンドの作成。

 まずは、テスト用テキストの作成。
 ファイル名は、test_hoge

hoge0
hoge1
hoge2
hoge3

次に、cat.hsを作成

main = do cs<-getContents
          putStr cs

 ghcコマンドでコンパイル

 $ ghc cat.hs -o cat

 catという実行ファイルが作成されるので、実行。

$ ./cat < test_hoge

 結果が以下の用に出力される。

hoge0
hoge1
hoge2
hoge3


cat.hsを分解してみる。

main = do cs<-getContents
          putStr cs

 上記のmainアクションには、
 「do」、「cs」、「<-」、
 「getContents」、「putStr」という要素がある。

 「do」は、「cs<-getContents」と「putStr cs」の
 2つのアクションを上から下に評価するために必要らしい。
 これがないと、評価の順番が違うらしい。

 「cs」は変数。
 ここでは、getContentsのアクションが評価された時の
 結果を格納するために用いている。

「<-」は、getContentsのアクションで得られた結果で
 「cs」を束縛するためのもの。

 C言語でいうと所の変数への代入か?
 
 「getContents」は、「標準入力を読み込む」というアクション。

 「putStr」は、引数として受け取った文字列を標準出力に出力する関数。