I’d like to get a reference to an overloaded math class
Given the following
def something[T](x: List[Number[T]]) = ???
I’d like to locate the correct math.max method for a Number of type T.
I’m aware that I could simply pull the first element out, get it’s type and use reflection to find the correct method. It just seems ugly. I also understand that due to type erasure of T
that it’s not going to be but so elegant.
Any ideas?
If you wish to abstract over numeric types you probably want a typeclass. It’s possible that the built-in Numeric
is sufficient, depending on what you’re up to. A generic sum
method using Numeric
might look like this.
def sum[A](as: List[A])(implicit ev: Numeric[A]): A =
as.foldRight(ev.zero)(ev.plus)
And then you would get the proper return type and everything’s good.
@ sum(List(1,2,3))
res6: Int = 6
@ sum(List(1.2, 3.4, 5.6))
res7: Double = 10.2
1 Like