¿Cuándo necesita Scala tipos de parámetros para funciones anónimas y ampliadas?
¿Cuándo necesita realmente el compilador Scala la información de tipo de parámetros de funciones anónimas?
Por ejemplo, dada esta función:
def callOn[T,R](target: T, f: (T => R)) = f(target)
entonces no puedo usarlo así:
callOn(4, _.toString)
=> error: missing parameter type for expanded function ((x$1) => x$1.toString)
y tengo que especificar
callOn(4, (_: Int).toString)
lo cual es bastante feo. ¿Por qué no funciona mi ejemplo, mientras que métodos como map, filter, foldLeft, etc. en las clases de colección no parecen necesitar este tipo explícito?