フジーコの日記

自分が試してみたプログラミング関連のブログです

Scalaの関数型ライブラリCats触ってみた

年末年始にScalaの関数型ライブラリCats触ってみたので、Catsについて社内の大新年勉強会で発表した。

参考文献

猫番 — 猫番

Scala with Cats - Underscore

Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド

所感

  • category(圏)が名前の由来になっているだけあって、参考文献には圏論に沿った説明が記述されていた。理解するのが難しかった。ただ、その後改めてカラーコップ本(Scalazの本)を読むと、PARTIIIの10章「モノイド」、11章「モナド」、12章「アプリカティブファンクとトラバーサブルファンクタ」の章の理解が深まった。
  • CatsのEvalモナドが個人的には興味深かった。特にEvalモナドによるスタックセーフな遅延演算をサポートにより、スタックオーバーフローを回避できるといった例の所。今まで再帰処理では継続渡しスタイルを用いれば末尾再帰最適化されてStackOverflow回避できると思っていた。でも、それでは解決できないケースがあるから、トランポリン化を使って回避しようねってゆう話なんだけど、これもカラーポップ本の13章で出てきてて、初めてこの章読んだ時に全然理解できなくてさらっと呼び飛ばしたの思い出した。改めて読み直してみると、凄い理解が深まった。
  • 全体通して、Catsを勉強したことによって、今まで関数型プログラミングの書籍読んで全然概念やメリットが理解できなかった所の理解が進んだ。今後、Catsを業務やプライベートでScalaで何か作る時に使っていきたい。