高階関数、カリー化、クロージャ、遅延評価、ポリモーフィズム
関数を引数や戻り値とする関数。
- カリー化
複数の引数を持つ関数から、最初の引数を指定し、残りの引数を引数とする関数を得ること。
カリー化をするための典型的な機能。
★以上の3つは、密接な関係にあり、関数型プログラムには不可欠である。
- 遅延評価
目的の機能が必要になるまで、処理をしないこと。
利用しないオブジェクトは生成されないため、処理が最小限になり、
処理速度の向上が期待できる。Haskellは遅延評価が基本。
最近の言語であれば、たいていこの機能を利用可能。。
同一のメソッド呼出しで、対象となるオブジェクト(クラス)によって異なる処理が実行されること。
一般的なOO言語の場合は、継承して、メソッドオーバーライドで実現できる。
Javaの場合、インターフェースを実装することによって実現する。
C++は純粋仮想関数を使用する(と思う)。
関数型言語の場合、高階関数を利用する(たぶん。クロージャでもできるかも。)
だんだん適当になってきた。(笑)