Warum leitet Scala den Typ nicht aus generischen Typparametern ab?

Angenommen, diese Funktion

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

Warum dieser Code nicht kompiliert:

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

Aber dieser macht:

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

Oder

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

Währenda Typ kann aus der Liste abgeleitet werden, die istList vonInt. Warum leitet Scala den Typ hier nicht ab?

Gibt es einen anderen Weg?