関数型プログラミングとは何かを理解する
from Understanding Functions
FP とは、関数が非常に重要であるかのようにプログラミングすること
関数をあらゆる場所、あらゆるものに使う
OOP との対比
大きなプログラムを小さなパーツで組み立てている場合
OOP の場合、このパーツが クラス や オブジェクト になる
FP の場合、このパーツが関数になる
プログラムの一部をパラメータ化する必要や、コンポーネント間の結合を軽減する必要がある場合
OOP の場合、インタフェース や 依存性の注入 を用いる
FP の場合、関数を使ってパラメータ化する
DRY に従って、多くのコンポーネント間でコードを再利用したい場合
OOP の場合、継承 や Decorator パターン のようなテクニックを使う
FP の場合、再利用可能なコードを関数にまとめ、関数合成を使ってそれらを組み合わせる
単なるスタイルの違いではなく、プログラミングに対する考え方が異なることを理解すること
別の パラダイム で生じる問題をそのまま答えるのでは駄目
e.g.
コレクションをループするにはどうしたらよいか
Strategy パターン を実装するにはどうしたらよいか
その疑問が解決したかった根底の課題をどう解決するかを考える
e.g.
コレクションの各要素に対して アクション を実行するにはどうしたらよいか
振る舞いをパラメータ化するにはどうしたらよいか