¿Por qué scala no infiere el tipo de parámetros de tipo genérico?

Supongamos esta función

def func[A](data: List[A], mapper: A => String) = { 
  data.map(item => mapper(item)) 
}

Por qué este código no se compila:

val list = List(1, 2, 3)
func(list, a => a.toString)

Pero este hace:

val list = List(1, 2, 3)
func[Int](list, a => a.toString)

O

val list = List(1, 2, 3)
func(list, (a: Int) => a.toString)

Mientrasa tipo se puede inferir de la lista que esList deInt. ¿Por qué Scala no infiere el tipo aquí?

¿Hay alguna otra manera?

Respuestas a la pregunta(1)

Su respuesta a la pregunta