Why isn't the implicit not found, even in something as trivial as:
class Wrapper[+A](data: Vector[A]) {
def sum[B >: A](implicit num: Numeric[B]) = data.sum
}
won't compile, without resorting to manually passing in num
to data.sum
Why isn't the implicit not found, even in something as trivial as:
class Wrapper[+A](data: Vector[A]) {
def sum[B >: A](implicit num: Numeric[B]) = data.sum
}
won't compile, without resorting to manually passing in num
to data.sum
Copyright © 2021 Jogjafile Inc.
§7.2 of Scala specification (page 107) states that
implicit parameters are inferred after any type arguments are inferred
. I believe this is the problem.Typer infers most specific parameter for
data.sum
-A
, and then looks for implicitNumeric[A]
in scope. He can't substitute it withNumeric[B]
becauseNumeric
is invariant.