Попытка выяснить, почему код компилируется для вывода вложенного типа для метода с arity-2, но не с каррированием.
object Test
{
trait Version
object VersionOne extends Version
trait Request[A <: Version]
trait RequestOne extends Request[VersionOne.type]
case class HelloWorld() extends RequestOne
def test1[A <: Version, T <: Request[A]](t : T, a : A): T = t
def test2[A <: Version, T <: Request[A]](t : T)(a : A): T = t
}
// This works
Test.test1(Test.HelloWorld(), Test.VersionOne)
// This doesn't
Test.test2(Test.HelloWorld())(Test.VersionOne)
test2 не может скомпилироваться со следующей ошибкой:
Ошибка: (22, 73) выведенные аргументы типа [Nothing, A $ A96.this.Test.HelloWorld] не соответствуют границам параметров типа метода test2 [A <: A $ A96.this.Test.Version, T <: A $ A96.this.Test.Request [A]]
def get $$ instance $$ res1 = / * ### лист ### сгенерированный $$ end $$ * / Test.test2 (Test.HelloWorld ()) (Test.VersionOne) </p>
С нетерпением ждем некоторых идей о том же.