ソート済みマージ機能をリストに追加するtypeclassを作成しようとしています。typeclassを定義できません
私はerror: List[Int] takes no type parameters, expected: one
val IntSortedMerge = new SortedMerge[Int, List[Int]] {
^
は、私がここで間違って何をしているのですか?、次のエラーを取得しています
trait SortedMerge[A, B[A] <: List[A]] {
def sortedMerge(l1: B[A], l2: B[A]): B[A]
}
implicit val IntSortedMerge = new SortedMerge[Int, List[Int]] {
override def sortedMerge(l1: List[Int], l2: List[Int]): List[Int] = {
@tailrec
def merge(l1: List[Int], l2: List[Int], l: List[Int]): List[Int] = {
(l1, l2) match {
case (Nil, Nil) => l
case (Nil, _) => l ++ l2
case (_, Nil) => l ++ l1
case (h1 :: t1, h2 :: t2) if (h1 < h2) => merge(t1, l2, l :+ h1)
case (h1 :: t1, h2 :: t2) => merge(l1, t2, l :+ h2)
}
}
merge(l1, l2, List[Int]())
}
}
def sortedMerge[A, List[A]](l1: List[A], l2: List[A])
(implicit merger: SortedMerge[A, List[A]]) = merger.sortedMerge(l1, l2)
は実際に私がジェネリック型クラスを記述しようとしていますが、私はそれを制限しましたリストにはこの例でのみリストします。 –
@SarveshKumarSinghオクラホマ、参照してください。だから最初の解決策はあなたの必要性を足元で今のところは – vsminkov