Erklärung der Funktionssignatur der Scala-Karte?

Dieser Code wendet eine Funktion auf die Liste der Ints an und legt jeden Wert in der Liste der Optionen mit dem Wert 4 fest:

  val l = List(1,2,3,4,5)                         //> l  : List[Int] = 
  val v = 4                                       //> v  : Int = 4
  def g(v:Int) = List(v-1, v, v+1)                //> g: (v: Int)List[Int]
 l map (x => {f(x);})                            //> res0: List[Option[Int]] = List(Some(4), Some(4), Some(4), Some(4), Some(4)) 

Unterschrift der Karte:

   def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {

Da B der erste Typparameter ist (in Map [B, That]), bedeutet dies, dass er in den Präfixoperanden 'l' (List) eingegeben wird?

Wie wird 'A' eingegeben? Überprüft der Scala-Compiler irgendwie den Typ in der Liste 'l' und schließt daraus, dass er vom Typ Int ist?

Wie ist das geschrieben?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage