Programming in Haskell

最初の5章はPDFで見れ、スライドは11章まで。

最初は関数の簡約、変換の解説から入っている。2章はPreludeの説明とHugsの使い方(:loadと:reload)、そして文法。3章は型と型クラス(作り方は後ろの章)、4章は関数、5章はcomprehensionになっている。


スライドはこれだけでいいんじゃないかと思うくらい秀逸。とりわけfoldrの図はいい。(foldr + 0) は、[1,2,3,4] = (1 : (2 : (3 : (4 : []))))を食わせると、(1 + (2 + (3 + (4 + 0))))になるってやつ。

8 Functional Parsersと9 Interactive Programs は、いわゆるMonadのことだけど、Monadって用語を参考程度でしか使わずにその役目を説明できている。
読むときは、return やfailureがどのように伝播していくか頭の中で組み立てながら見ていくのがいいかも。


個人的には構成的にA Gentle〜よりは、入門者に対してずっと理解しやすい形になってると思う(Programming〜は全体読んでないけど):


このページは

で紹介されていた。


こちらではIEnumerable(イテレータ)と>>=という文があります。Monad型を返す関数はIEnumerableオブジェクトを返す関数とみなすということだろうか(ActionだとかEventオブジェクトでもいい。そういうのを全て同じインタフェースを実装させた感じ)。この視点はオブジェクト指向プログラマーには理解しやすいかもしれない。難解なのはむしろ、>>=を使って処理を書いた記述の戻り値がなんでってとこのほうかもしれない。