Haskell のお勉強 その6
以下のプログラムは、複数行の文字列からはじめの2行を
表示するheadコマンド。
head.hs
main = do cs <- getContents putStr $ firstNLines 2 cs firstNLines n cs = unlines $ take n $ lines cs
上のプログラムをコンパイルして実行すると、
以下の結果となる。
head.hsに記載されたプログラムを、分解していく。
今回の目玉は、関数の定義と適応(C言語でいうところの関数呼び出し)が、
行われていること。
関数の定義部分は、以下の部分
firstNLines n cs = unlines $ take n $ lines cs
「firstNLines」は、関数名。
「n cs」は引数なので、この関数は引数を2つ取るものであることがわかる。
「=」以降が、関数の処理。
ここで一つ気になったんだけど、この関数の定義を見てみると
「main = 」っていうのも、main関数ってことなんだろうか?
参考書の最初で、「変数」という記載があったんだけど、どうなんだろう?
...mainは、主関数とのこと。
firstNLines関数は、「lines」関数で引数で得た、文字列を行ごとに
リストに格納し、「take」関数で、リストから n 個(プログラム中2個)の
要素を取りだし、「unlines」でリストを連結、結果を返すもの。
あとは、firstNLines関数からの戻り値をputStr関数を使って、
標準出力に出力して、終了となる。
ちなみに、putStr は、 print でダメなんかい?とおもって実行したら、
"hoge0\nhoge1\n"
と表示された。