Я хочу добавить новый класс неявного типа Divisible для каждого типа T, который уже имеет классы неявного типа Fractional или Integral.
Написанный мной код не компилируется:
object Divisible {
implicit def fractionalDivisible[T](implicit frac: Fractional[T]): Divisible[T] = new Divisible[T] {
override def div(x: T, y: T): T = frac.div(x, y)
}
implicit def fractionalDivisible[T](implicit integral: Integral[T]): Divisible[T] = new Divisible[T] {
override def div(x: T, y: T): T = integral.quot(x, y)
}
}
trait Divisible[T] {
def div(x: T, y: T): T
}
object Example extends App{
def foo[T](x: T, y: T)(implicit div: Divisible[T]) = div.div(x, y)
println(foo(1.0, 2.0))
}
Я получаю следующую ошибку:
не удалось найти неявное значение для параметра div: core.common.Divisible [Double]
Если, с другой стороны, я перемещаю неявное определение в приложение, оно компилируется.
Как я могу помочь компилятору найти неявное определение в сопутствующем объекте Divisible?
Изменить: в этом вопросе была ошибка.