第一級関数と高階関数
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/01/06 04:20 UTC 版)
「関数型プログラミング」の記事における「第一級関数と高階関数」の解説
詳細は「第一級関数」および「高階関数」を参照 関数型プログラミングの関数は、他の関数への引数や返り値にもできるのが標準である。これを第一級という。他の関数を自身の引数や返り値にできる関数は、高階といわれる。map filter reduceは高階関数の代表例である。第一級関数は値と同等に扱われるので、変数に束縛したりデータ構造に当てはめることができる。値に名前が付けられないのと同様に名前無しの関数も定義できて、それは式内スコープ使用前提の無名関数になる。第一級関数は、関数の型(英語版)で型付けされた値として扱われる。 高階の性質は、カリー化や部分適用(英語版)などの実装を可能にする。関数を一つずつ引数に適用させる形式にするのをカリー化と呼ぶ。引数への適用を途中で止めたままにするのが部分適用である。それは変数に束縛して保存でき、後続式で残り引数を適用して最終的な返り値にできる。カリー化は、先行関数の返り値と後続関数の第一引数を連結した関数合成(英語版)を可能にする。 第一級の性質は、クロージャや継続などの実装を可能にする。クロージャは後続式で引数を与えられることを前提にした抽象的な値を表現する。クロージャはしばしば特定の状態を囲い込んでそれをデータ抽象化する。継続は後続式で評価されることを前提にした関数式のスナップショットを実現する。継続は計算式の挿入や入れ替えや再利用による計算フローの制御に役立てられる。
※この「第一級関数と高階関数」の解説は、「関数型プログラミング」の解説の一部です。
「第一級関数と高階関数」を含む「関数型プログラミング」の記事については、「関数型プログラミング」の概要を参照ください。
- 第一級関数と高階関数のページへのリンク