Effective Haskellを読む
Effective Haskellが届いた。嬉しいので、読み進めていく間に所感とかメモとかをここに残していく。
といっても、もう300ページくらいまでは読んでしまったので、振り返って書いていく内容もあるかも。
Effective Haskell 252/615 ページ
deriving周りは今まであんまりちゃんとやってこなかったので、読めてよかったと思った。特にDerivingViaとDerivingStrategiesは使ったことがなくて、これからは積極的に使っていきたい。
デフォルトのDeriving strategyがstock
と呼ばれることは知らなかった。
関連するGHC拡張は以下:
StandaloneDeriving, GeneralisedNewtypeDeriving, DerivingVia, DeriveAnyClass, DerivingStrategies
この辺はあまり安全じゃない印象があったんだけど、DerivingStrategiesを使えば安全に使っていけそうっぽい。
より発展的な内容として、GHC.Genericとも絡めた話が欲しかった気もする。
Effective Haskell 363/615 ページ
Chapter 7. Understanding IO, 8. Working with the Local System, 9. Introducing Monadsは、概ねモナドの導入のためのエクササイズで、目新しいことはない。
ただ、まだモナドとは何かみたいな話で悩んでいる人は、プログラムを書きながらエッセンス的なものを拾えるかもしれない。
Effective Haskell 230/615 ページ
Type Applicationsの説明がすごくよかったのを思い出した。特に234ページでspecified typesとinferred typesを絡めてきちんと説明してる点がいい。
GHC拡張のドキュメントを併せて読むと更にいい:
Effective Haskell 385/615 ページ
Dealing with Laziness and IO と続く Understanding Space Leaks は後でじっくり読み直したい。そのあとに続くThunkの話も気になる。
Chapter 10. Mutable Data in the Real World は、Haskellをある程度使っている人でもきちんと読む価値がある。
Effective Haskell 495/615 ページ
QuantifiedConstraints 知らなかった。これ欲しい場面が過去にあった気がする……。
Effective Haskell 615/615 ページ
残りはモナドを使った実際的なHaskellプログラムの例、存在量型、型族、カインド多相、GADTsなんかが中心だった。
実際的なHaskellプログラム例はHaskellの界隈では貴重な気がするけど、パーサーは割とありきたりなので、データベースへのアクセスみたいな汚くなりがちな材料を選んでくれても良かったかも。
パーサーがありきたりというのは、読者の想定を誤ったコメントだったかも。下のコメントで書いたような、基本的なHaskellの文法を学んだ人が2冊目の本にこの本を選ぶようなケースでは、まだHaskellでパーサーの実装を見たことがない可能性が高いので、パーサーの実装もあり。
総評としては、かなり良い本だったと思う。基本的なHaskellの文法を学んだ人が買う2冊目としてお勧めできる。
Haskellの基本的な文法を学んで、いざ何かプログラムを書こうと思ったが手が動かず、やりたいことをインターネットで調べると知らんGHC拡張が延々と出てきて、せっかく文法を勉強したのにHello World以外のプログラムを一つも書かずに挫折しそう、みたいな感じのレベルの人に読んでほしい。
でも英語なので、実際に誰かにお勧めするには日本語版が出てくれないことにはなかなか難しいかも。