高階関数
複数の引数をとる関数を1変数関数に置き換えることをカリー化と呼ぶ。例えば二つの数を足し合わせる関数 add は以下のようになる。
組み込みの関数が最初からカリー化されている言語がある。これは、関数呼び出しが常に1引数を取る関数を返すと定義するのと同じである(つまり n 引数関数を、n 個の引数の直積を取る関数とするのではなく、1 引数の高階関数を n 個並べたような型で定義する。)
例えば Haskell において、
と記述すると、これは先ほどの (add 2) と同じく、2を足す関数になる。関数 + が既にカリー化されているため、1 引数を適用するだけで関数として機能する。以下は実行例。