C#
C#でメソッドをカリー化してみる
関数(メソッド)をカリー化するためには、その言語で第一級関数が使えることが条件となる。
第一級関数とは、関数が第一級オブジェクトであることを言う。
ようするに、動的に生成できて、変数に格納できたり、他の関数に渡したり、関数から戻せたりできる関数のことだ。
C#のラムダ式はこのすべてができる上クロージャにもなれるので、関数(メソッド)をカリー化することができる。
下のような「2つの値を受け取って、その和を返す」というシンプルなメソッドをカリー化してみる。(クラスは省略している)
これをJavaでカリー化すると、下の「addNMethod」のようになる。
部分適用するためのラムダ式は「引数が1つ、戻り値あり」の関数なので、Functionインターフェースを使い、受け取った側でapply()メソッドを呼び出す。
|