Подтвердить что ты не робот

Почему индексы Scala кортежей основаны на 1?

"Программирование В Scala" объясняется, что кортежи

_N числа основаны на одном, а не на нулевом уровне, поскольку начиная с 1 традиция, установленная другими языками с статически типизированными кортежами, такими как Haskell и ML

но это вряд ли можно назвать объяснением.

Почему кортежи были определены как 1 на основе Haskell и ML в первую очередь? Существуют ли какие-либо математические/программные преимущества при использовании индексированных кортежей на основе 1, а не на основе 0?

Спасибо, Ori

4b9b3361

Ответ 1

Я думаю, _1, _2 и т.д. это сокращение от "первого", "второго" и т.д. (fst и snd, например, исторически использовались для доступа к левой и правой части кортежа). Индекс в массиве, с другой стороны, является смещением, а первый элемент обычно имеет смещение 0.

Есть ли какие-либо математические/программные преимущества при использовании индексированных кортежей на основе 1, а не на основе 0?

Нет. В любом случае элементы не имеют доступа к программному обеспечению. (Вы не можете сделать _i, если i - целое число.)

Ответ 3

0 основаны на том, что отлично, когда вы хотите делать математику с индексом. Он просто не работает с 1 базирующимися индексами.

Однако для всех, кроме компьютерных гиков 1, гораздо более естественным.

Кортежи предназначены для того, чтобы содержать совершенно разные вещи. Так что сделайте что-то вроде добавления индекса этого элемента и добавьте его в индекс этого элемента и получив элемент с результирующим индексом, не имеет смысла для кортежей.

Поэтому я бы сказал, что кортежи основаны на 1, потому что это естественная вещь, и нет причин не делать этого.