Diciamo che avete il seguente:Scala, currying e sovraccarico
foo(x: String)(y: Int): Int
foo(x: String)(y: Double): Int
Scala non consente tale espressione. Per quanto posso vedere, la ragione di questo è che foo ("asdf") non ha un tipo ben definito (è Int => Int o Double => Int).
C'è una ragione per cui tali funzioni "polifere" non dovrebbero essere consentite?
https://issues.scala-lang.org/browse/SI-2628 – Bradford
Scala consente di definire quella coppia di metodi sovraccaricati, ma ogni chiamata è ambigua, per ragioni illustrate da Martin di seguito. Rilevante: http://stackoverflow.com/questions/2510108/why-avoid-method-overloading – retronym