関数型言語

関数型言語

関数型言語とは、関数型プログラミングを基本スタイルとして推奨する機能を持つプログラミング言語関数型プログラミング言語の略称である。何をもって関数型プログラミングとするか、関数型プログラミングを行っているコミュニティ内でも正確な定義や合意というものは存在しないが、ここでは、再代入できない永続データを駆使して問題を解く永続データプログラミングを奨励し支援している言語を関数型言語と定義する。

関数型言語との対比で言えば,命令プログラミングとは「短命データプログラミング」ということになる。短命データとは再代入により破壊できるデータのことである。for文のカウンタ変数iが典型的な短命データである。

たとえば、手続き型プログラミングでは 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


関数型言語の具体例

静的型付き:Clean,F#,HaskellOCamlScala,SML
動的型付き:ClojureErlang

型の検査を(コンパイル時など)実行の前に実施するのが静的型付き,実行時に実施するのが動的型付きである。