Por que um intervalo é transformado em vetor após a operação do mapa?

Após os cursos de Scala na Coursera, Martin Odersky mostrou um código de exemplo que é:

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

E ele disse que oRange é transformado em umVector porque eles compartilham a mesma interface (IndexedSeq) eo resultado não pode ser representado como umRange (ficou mais claro em seu exemplo, já que ele gerou um par que não é representável comoRange).

Eu não tenho certeza de entender porque eu acho que ele disse anteriormente que em uma expressão para o primeiro gerador irá determinar o tipo de elemento que será produzido, e nem sempre parece ser verdade, pelo menos paraRange.

E eu não tenho certeza de entender por que a saída éVector, PorqueVector pode não ser a única outra implementação que pode representar o resultado calculado acima.

Alguém pode me ajudar a entender essa parte por favor?

questionAnswers(3)

yourAnswerToTheQuestion