「関数型プログラミング」の版間の差分

削除された内容 追加された内容
冒頭文を記述してみました
編集の要約なし
1行目:
{{独自研究|date=2014年4月}}
{{プログラミング言語|index=かんすうかたけんこ}}
[[ファイル:Orange lambda.svg|境界|右|フレームなし|209x209ピクセル]]
'''関数型プログラミング'''(かんすうがたプログラミング、{{lang-en-short|''functional programming''}})は、[[プログラミングパラダイム]]の一つであり、[[ソフトウェア工学]]における主にプログラムリスト成とコード記述の知識体系分野で用いられる考え方である。[[数理論理学]]の[[ラムダ計算]]を起源にして案されたと言われる
 
プログラムデータの構成要素である値(''value'')を限りなく抽象化して、入力と出力の同時表現体すると共にその変換式も併せ持たせており、これがターム的に'''関数'''(''function'')と定義されている。関数は同時に入力の引数と出力の関数参照にもなるので演算の連鎖が可能であり、この仕組みの能動側は'''[[高階関数]]'''(''high-order'')、受動側は'''[[第一級関数]]'''(''first-class'')と呼ばれている。変換式はプログラムデータに一切の影響を与えず、また一切の影響を受けない事が保証されており、この原則は'''[[参照透過性]]'''(''referential transparency'')と定義され、仕組み的には'''純粋関数'''(''pure'')と呼ばれている。値は関数の他に'''[[構造体]]'''(''data structure'')としても抽象化される。これも関数の引数または返値となる。
 
プログラムは値の宣言(''declaration'')とそれらを演算子で繋いだ式(''expression'')の連続で構成され、これが順次処理となる。値は数値、構造体、関数、関数連鎖に随時抽象化される。分岐処理は一般に、条件式を引数にしてthen式またはelse式のどちらかを引数にする関数参照を返す[[無名関数]]の形態で行なわれる。反復処理は関数の'''[[再帰]]'''(''recursion'')として行なわれる。再帰はその関数内の評価(''eval'')が変わらなくなるまで繰り返される。これらの特徴を持ったものが関数型プログラミングと見なされる。