関数型プログラミング

less than 1 minute read

関数型プログラミング

関数型プログラミングの最も大きな特徴は、immutableデータとファーストクラスの関数です。

mmutable vs mutable

まず、immutablemutableの違いについて理解する必要があります。immutableとは、そのまま変更できないことを意味します。immutableオブジェクトは、オブジェクトが持っている値を変更できないオブジェクトを指し、値が変更される場合には新しいオブジェクトを作成して変更された値を注入して返す必要があります。一方、mutableオブジェクトは、そのオブジェクトの値が変更される場合、値を変更します。

first-class citizen

関数型プログラミングのパラダイムを採用している言語では、関数(function)一級オブジェクト(first class citizen)と見なされます。一級オブジェクトとは、以下のような特徴を持っています。

  • 変数やデータ構造の中に関数を格納することができ、関数のパラメータとして渡したり、関数の戻り値として使用することができます。
  • 名前に関わらず一意に区別が可能です。
  • 関数をリテラルとして直接定義することができます。

Reactive Programming

リアクティブプログラミング(Reactive Programming)は、宣言型プログラミング(declarative programming)とも呼ばれ、命令型プログラミング(imperative programming)の反対語です。また、関数型プログラミングパラダイムを活用することを意味します。リアクティブプログラミングは基本的にすべてをストリーム(stream)として扱います。ストリームとは、値の集合と見なすことができ、提供される関数型メソッドを使ってデータをimmutableに管理することができます。

Comments