関数型プログラミング
関数型プログラミング
関数型プログラミングの最も大きな特徴は、immutableデータとファーストクラスの関数です。
mmutable vs mutable
まず、immutable
とmutable
の違いについて理解する必要があります。immutable
とは、そのまま変更できないことを意味します。immutable
オブジェクトは、オブジェクトが持っている値を変更できないオブジェクトを指し、値が変更される場合には新しいオブジェクトを作成して変更された値を注入して返す必要があります。一方、mutable
オブジェクトは、そのオブジェクトの値が変更される場合、値を変更します。
first-class citizen
関数型プログラミングのパラダイムを採用している言語では、関数(function)
は一級オブジェクト(first class citizen)
と見なされます。一級オブジェクトとは、以下のような特徴を持っています。
- 変数やデータ構造の中に関数を格納することができ、関数のパラメータとして渡したり、関数の戻り値として使用することができます。
- 名前に関わらず一意に区別が可能です。
- 関数をリテラルとして直接定義することができます。
Reactive Programming
リアクティブプログラミング(Reactive Programming)は、宣言型プログラミング(declarative programming)とも呼ばれ、命令型プログラミング(imperative programming)の反対語です。また、関数型プログラミングパラダイムを活用することを意味します。リアクティブプログラミングは基本的にすべてをストリーム(stream)として扱います。ストリームとは、値の集合と見なすことができ、提供される関数型メソッドを使ってデータをimmutableに管理することができます。
Comments