エントリポイントはmain変数から始まるらしい。何か前に聞きかじった時は、特にエントリポイントは決まっていないというような話だった気がするんだけど、気のせいだったか。
main = putStrLn "Hello World !"
mainは値が代入されるんじゃなくて、その値が評価されるとアクションが実行されるらしい。うーん、結局どういう事なのか分からない。第11章で詳しく説明するという事なので、それまでお預け。
で、次はcatの実装。
main = do cs <- getContents putStr cs
"=" は評価だけど、"<-" は変数の束縛。で、putStrはcsを「参照」している。まだこのあたりの用語の使い分けがどういう基準なのか分からない。
getContentsは遅延評価のおかげで、putStrで必要になる時に初めて標準入力から1行読み込む。入出力と遅延評価は相容れないみたいな話を聞いた事があるような気がするけど、その辺りはどういう関係なんだろう。