ぶろぐ

日記です

関数リテラル(無名関数生成)がないとカリー化ができないことに気づいた


できるっしょ、と思ったけど、プログラムで動的に関数を生成することができないとカリー化ができないことがわかった。

scala> def base(x1: Int, x2: Int) = { x1 * x2}
base: (x1: Int, x2: Int)Int

scala> def curry(x1: Int) = { (x2: Int) => base(x1, x2) }
curry: (x1: Int)Int => Int

scala> curry(1)
res0: Int => Int = <function1>

scala> curry(1)(2)
res1: Int = 2

scala> curry(2)(2)
res2: Int = 4

そうか、Javaではできないのか。
1引数関数ほいほい