¿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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta