部分的にvarargsでカリー化された関数を適用するのに奇妙なことがあります。この例を考えてみましょう:部分的に適用された関数をvarargsで定義して呼び出しますか?
def adder(a: Int)(b: Int*) = b.map(_ + a)
adder(1)(1,2,3,4) // res1: Seq[Int] = ArrayBuffer(2, 3, 4, 5)
val add2 = adder(2) _ // add2: Seq[Int] => Seq[Int]
add2(1,2,3,4) // Fails to compile
add2(Seq(1,2,3,4) // res3: Seq[Int] = List(3, 4, 5, 6)
私はprevious questionを認識していますが、私はまだ、コンパイラがこれを行う理由は、これらのケースでいくつかの巧妙な解決策があるかどうかを知りたいです。