Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 1.84 KB

File metadata and controls

29 lines (21 loc) · 1.84 KB

何をもって関数型プログラミングとするか、関数型プログラミングを行っているコミュニティ内でも正確な定義や合意というものは存在しないが、一般的には、[[手続き型プログラミング]]とはコマンド実行の列としてプログラムを記述するスタイルであるのに対し、関数型プログラミングは複数の式を関数の適用によって組み合わせていくプログラミングスタイルである、ということは広く認められている。

たとえば、手続き型プログラミングでは 1 から 10 までの整数を足し合わせるプログラムは

total = 0;
for i = 0 to 10 do
  total = total + i;
done;

のように、一時変数に数値を足していくコマンドの繰返し実行という形を取るのが典型的である。

一方、関数型プログラミングでは、同じプログラムを一時変数を使わずに関数の再帰呼出しを使い、全体として一つの式として書くことが多い:

let    
    sum x = if x == 0 then  0
            else  x + sum (x - 1)
in
sum 10

関数型言語とは関数型プログラミングを推奨するプログラミング言語の事であるが、 多くの場合、関数型言語を使って手続き型プログラミングスタイルを用いたプログラムを書くことは可能であるし、 手続き型言語を使って関数型プログラミングを行うことも可能である。

関数型プログラミングではプログラムの構成に関数を多用するため、ほとんどの関数型言語では関数を一級オブジェクトとして扱うことができる。また、言語の理論的構成は、一級オブジェクトとしての関数を扱うことのできるλ計算などを使うことが多い。