Haskellにリベンジ

関数型プログラム言語「Haskell」にかつて1度挑んだことがありましたが、HelloWorldだけやってそれ以降やってませんでした。(そもそもHaskellの流儀的にHelloWorldが正しいのか分からないけどw)
ずっと「もう少し理解したいなあ」と思っていたのですが、ちょうど今日気が向いたのでチャレンジしてみました。


教本はこちら。
「ふつうのHaskellプログラミング」です。

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

CやJava使いの人向けに書かれているため、すごく分かりやすい!


とりあえず今日は、2章までを軽くやった感じです。
最後の練習問題の文字数カウント(バイト数?)ですが、これだけで実装できるのがちょっと気持ちよかったかも。

main = do cs <- getContents
          print $ length cs


それと、まだちょっと慣れないのが$の扱い。
上の例だと、「print $ length cs」というのは、Cライクに書くと「print(length(cs))」ということらしいです。
実際にHaskellでも「print(length cs)」と書いて動くようですが、流儀としては$を使う方だとか。


その他のCライクな言語ならすぐに習得する自信はあるのですが、関数型はホント別系統なのでなかなか難しいですね。
よくプログラムが分からないという人に「あんなの簡単だよw」と言ってしまうのですが、Haskellに触れると「ああ、プログラムを知らない人が始めるのって、こういう感覚なんだ」と思い知らされます。
うん、今度からプログラム初心者にはもっと優しく触れることにしようw