¿Por qué un rango se transforma en un vector después de la operación del mapa?

Siguiendo los cursos de Scala en Coursera, Martin Odersky mostró un código de ejemplo que es:

1 to 5 map ( i => i*i )

Y dijo elRange se transforma en unVector porque comparten la misma interfaz (IndexedSeq) y el resultado no pudo ser representado como unRange (fue más claro en su ejemplo, ya que generó un par que no es representable comoRange).

No estoy seguro de entender porque creo que dijo anteriormente que en una expresión para el primer generador determinará el tipo de elemento que se obtendrá, y parece que no siempre es cierto, al menos paraRange.

Y no estoy seguro de entender por qué la salida esVector, porqueVector puede que no sea la única otra implementación que pueda representar el resultado calculado anteriormente.

¿Puede alguien ayudarme a entender esta parte por favor?

Respuestas a la pregunta(3)

Su respuesta a la pregunta