/ / Как да се разделимСа скала списък, използвайки безформен - скала, безформен

Как да разделим Scala списък с безформени - скала, безформена

Опитвам се да разделя списък на размер S на N, където е известно, че N, M обобщават до S. Това не се компилира:

def splitIt[N <: Nat,
M <: Nat,
S <: Nat](u: Sized[List[Int], N] {type A = N},
v: Sized[List[Int], M] {type A = M},
t: Sized[List[Int], S] {type A = S})(implicit sum: SumAux[N, M, S]): Unit = {
val z = t.splitAt[N]
}

грешки

No implicit view available from List[Int] => scala.collection.GenTraversableLike[S,List[Int]].

not enough arguments for method sizedOps: (implicit evidence$2: List[Int] => scala.collection.GenTraversableLike[S,List[Int]])shapeless.SizedOps[S,List[Int],S]. Unspecified value parameter evidence$2.

Окончателна правилна версия

def splitIt[N <: Nat,
M <: Nat, S <: Nat](u: Sized[List[Int], N] {type A = Int},
v: Sized[List[Int], M] {type A = Int},
t: Sized[List[Int], S] {type A = Int})(implicit sum: DiffAux[S, N, M], toInt: ToInt[N]): Unit = {
val z = t.splitAt[N]
}

Отговори:

5 за отговор № 1

Най- type A трябва да бъде вида на елементите от списъка, а не аргументът за размера отново. Ето защо се опитва да превърне в a GenTraversableLike[A, List[Int]], Трябва да настроите A да се Int във всеки случай.