为什么Scala的索引以1为基础?

Ori*_*Ori 37 scala

" Scala编程 "解释了元组'

_N数字是从一开始的,而不是从零开始,因为从1开始是由其他语言设置的传统,具有静态类型的元组,如Haskell和ML

但这很难说是一种解释.

为什么在Haskell和ML中首先将元组定义为1?有基于1的索引元组而不是基于0的数学/编程优势吗?

谢谢,Ori

aio*_*obe 22

我想_1,_2等等,它是"第一","第二"等的缩写.(fst以及snd例如在历史上一直用于访问元组的左边和右边部分).另一方面,数组中的索引是偏移量,第一个元素通常是偏移量0.

有基于1的索引元组而不是基于0的数学/编程优势吗?

不会.无论如何都不能以编程方式访问这些元素.(_i如果i是整数,则不能这样做.)

  • 一直纠正到最后一句.可以使用Product.productElement(n)以编程方式访问元素...基于n 0,因此例如tuple.productElement(3)== tuple._4 (9认同)

sar*_*old 6

也许Haskell和ML使用了基于1的元组,因为COBOL,Algol和FORTRAN使用了基于1的数组.传统是一件有趣的事......

  • Algol68允许程序员从任何下限索引一个数组,默认为1. cf Van Wijngaarden:''"让我卖给你一种语言",他开始说,并继续勾勒出语言背后的想法.他展示了一些例子."你能说出三角形阵列吗?"某人(Tony Hoare?)打断了他."不仅仅是三角形,甚至是椭圆形的"Aad回答道,并展示了"ALGOL 68的制作"中的内容."http://www.cs.ru.nl/~kees/home/papers/psi96.pdf (3认同)