Python3の型注釈が目指す世界をきちんと理解したいと思い、 2年越しくらいですごいHaskellたのしく学ぼう!をようやく読み終わりました。 型クラスの話あたりから、動的型言語(まともに書ける言語がPython, Ruby, R)にとっては感覚をつかみにくかったのですが、 「型クラスは型がもつ共通の性質をモデリングするためのもの(そしてそれは代数学の概念が元になっているらしい)」という感覚をつかむとと受け入れられました。 Elixirの本に「(関数型)プログラミングはデータの変換をするものだ」という、 関数型プログラミングの特徴を分かりやすく説明した記述があります。 Haskellはそこから一歩進んで、「関数の引数や戻り値がどんな性質を持っているか、つまりどんな型や型クラスなのかを意識しろ」と言っているようです。 話はやや逸れるのですが、数理最適化が好きな同僚(なんかもう後輩って呼べな
![【雑記】Haskell(で|と)数学を割と真面目に勉強しようと思います - 歩いたら休め](https://cdn-ak-scissors.b.st-hatena.com/image/square/4ac4769b9d388975a03c0466f2a7d0ed3749f541/height=288;version=1;width=512/https%3A%2F%2Fimages-fe.ssl-images-amazon.com%2Fimages%2FI%2F51SBMiq1cML._SL160_.jpg)