ulgeek アドベントカレンダーの 5日目です。 Advanced Scala with Cats というPDF があり、 Cats を通して型クラスの便利さを体感するのにとっても良い資料だと思いましたので、その内容をベースに型クラスによる FP(Functional Programming) を紹介していきます。 私は FP(Functional Programming) は副作用や状態変更を可能な限り局所化するプログラム方法だと思っています。 端的に言えば IO 処理や変数の再代入といったコードはできないか制約があります。副作用や状態変更を排するとプログラムが他のプログラムの動作に影響を与える可能性が、関数の引数や戻り値に限定されるので再利用性や結合性が高まり、バグやミスが減らせるといわれています。 また、 FP に型をつけることでコンパイル時に多くのエラーを見つけることができます。