すごいHaskellたのしく学ぼう! を読んだ

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

読み終わった。すごく丁寧にHaskellの考え方を教えてくれる本。じわじわ概念を教えてもらえて、最終的にはモナド便利やん! というところまで到達できて、とても良い本だった。

いっしょに働いている同僚のmechairoiさんがHaskellに詳しくて、Scalaでコードを書いていると「implicit は型クラスを定義するのに便利なんだよ」とか「for式っていうのは、Haskellでいうdoだから便利」ということを教えてくれる。どうやら便利そうな概念なのだけど、型クラスとかモナドなんかをちゃんと理解できていなくて良くないので、この本を読んで入門してみることにした。

この本は、教えてくれる順番がすごくよく出来ていて、難しい概念も前半のほうから、気づかないうちにすこしづつ小出しされていって、だいたい理解した頃に、今まで行ってきたのはじつはこれのことでしたというふうな展開になるので、納得しながら読み進められる。

具体的には、7章くらいでファンクタという概念が説明されて、そのあと練習問題をはさんで理解が深まった11章あたりで、ファンクタの強化版という触れ込みでアプリカティブファンクタの話がでてくる。MaybeやリストやIOあたりがアプリカティブファンクタであることを説明されたり、文脈を維持したまま計算を組み立てるのに慣れてきたころに、実はモナドというのがあるという話になる。この頃にはMaybeがモナドだとか言われても、話の流れで自然に理解できるし、ファンクタ則とかも勉強してきているので、モナド則が現れても特にこわくない。

圏論とかよくわからないけど、実用的にはモナドをどう使えばよいか、何が便利かは理解できたような気がする。強い型付けのあるHaskellのような言語でのプログラミングスタイルも見ることができた。めっちゃHaskellを書きまくるという予定はないけど、学んだことはScalaではすぐに役立ちそうだし、それ以外の言語を使う時にも計算の扱うときの考え方の道具が増えて役立ちそうという感じだった。