Passing scala.math.Integral as implicit parameter
I have read the answer to my question about scala.math.Integral but I do not understand what happens when Integral[T] is passed as an implicit parameter. (I think I understand the implicit parameters concept in general). Let's consider this function import scala.math._ def foo[T](t: T)(implicit integral: Integral[T]) { println(integral) } Now I call foo in REPL: scala> foo(0) scala.math.Numeric$IntIsIntegral$@581ea2 scala> foo(0L) scala.math.Numeric$LongIsIntegral$@17fe89 How does the integral argument become scala.math.Numeric$IntIsIntegral and scala.math.Numeric$LongIsIntegral ? The