Просмотр последовательности как присваивания из целых чисел элементам - это только один способ описать, что такое последовательность.Существуют и другие способы, и нет никаких причин, по которым такой способ описания последовательности должен стать каноническим.Фактическая цель последовательности состоит в том, чтобы сделать группу элементов доступной и проходимой.Последовательность не требуется для фактического назначения целых чисел элементам.Например, большинство реализаций Stream
, вероятно, не имеют счетчика, работающего параллельно обходу.Требование этого может привести к ненужным накладным расходам на реализацию.
Кроме того, Map[K,V]
также является Iterable[(K,V)]
.Следуя вашему предложению, Seq[A]
также должен был бы быть Map[Int,A]
, что также сделало бы его Iterable[(Int,A)]
.Поскольку Seq
расширяет Iterable
, это сделает Seq[A]
одновременно Iterable[A]
и Iterable[(Int,A)]
(и, рекурсивно, Iterable[(Int,(Int,A))]
, Iterable[(Int,(Int,(Int,A)))]
и т. Д.), Что недопустимоспособ наследования в Scala.
Вы можете составить аналогичный аргумент для своего предложения относительно Set
.