1

f: A => B => ... => Zscala/scalaz/shapeless/etcの一般的なエンリッチメントはありますか? そのようなf.uncurried:(A, B, ...) => Z

現在、私はこれを持っていますが、既存のより一般的な解決策がどこかにあるに違いないと思います。

implicit def enrichMyCurriedFunction[A, B, C] = new EnrichedCurriedFunction[A, B, C](_)

class EnrichedCurriedFunction[A, B, C](f: A => B => C) {
  def uncurried: (A, B) => C = (a, b) => f(a)(b)
}
4

1 に答える 1

3

確かに組み込み関数があります:

val foo = (x: Int) => (y: Int) => x+y
foo: Int => (Int => Int) = <function1>

Function.uncurried(foo)
res16: (Int, Int) => Int = <function2>
于 2012-12-11T20:56:42.223 に答える