变量名x和xs的历史是什么?

jsa*_*sau 33 haskell naming-conventions

我想要拿起一些Haskell,我在敬畏和迷惑之间交替.对我来说真正疏远的事情之一,就像这似乎是微不足道的,是模式匹配成语(x:xs).这些变量名称来自哪里?它们可以是任何东西 - (kernel:cob),(spam:eggs)(稍微倾一下手),或者 - 最明智的,在我的脑海里(h:t),代表"头"和"尾巴".

我想这个x前缀对于指示两个项目都来自同一个列表非常有用,所以当时(xh:xt)或者甚至只是(x:xt)感觉特别简洁.但为什么s?这是什么意思?它从哪里来的?我觉得,此刻,知道会帮助我应对我的困惑.

也许我正在以错误的方式思考这个问题; 请随时告诉我.

mip*_*adi 44

x是数学中常见的变量名.xs(是x吗?)的复数形式.在列表模式匹配中,x是一个元素,并且xs(通常)是几个.

  • 如果你有一个说蛋的列表,那么`egg:eggs`似乎并不那么奇怪,是吗?如果它是任何事物的列表(多态),那么`x`并不比其他任何东西更糟糕.如果记忆为我服务,Phil Wadler引入了将`x`复数为`xs`的惯例. (13认同)
  • 好吧,它们与`x`的数据类型相同...... (11认同)
  • @jsau我认为如果你有鸡蛋清单,"鸡蛋:鸡蛋"是相当惯用的.我当然用过它.而且`item:items`并没有什么奇怪的,但对我来说它不比`x:xs`更具描述性.在Haskell代码中,您经常会发现具有较小范围的标识符具有短名称,而具有较大范围的标识符具有较长的名称. (9认同)
  • 在非正式的数学演讲中,将(x 1,x 2,x 3,...)称为"exes"序列是很常见的. (6认同)
  • 这是菲尔:http://www.reddit.com/r/programming/comments/19mw7v/on_f_readability/c8q2y8r (3认同)

scl*_*clv 30

当然,我们可以x更深入地了解背后的起源:-)弗朗索瓦·维特(FrançoisViète)(1540-1603)出版了一本名为" 艺术分析法"("分析艺术入门")的书,这是第一部系统地使用字母的作品.代表数字.

编辑:下面的Porges,指出了Cajori 真正酷的数学符号史.令我惊喜的是,整个作品可在线获取:http://archive.org/details/historyofmathema031756mbp

  • 我将对这个答案提出疑问:对于Cajori的*数学符号历史*的粗略检查表明,*x*本身并未被Viète使用,而是由笛卡尔推广.Viète一般使用*首都元音*(A,I,O,V,Y)来表示未知数.关于笛卡尔:"使用*z*,*y*,*x*,...表示未知数是由于RenéDescartes,在他的*Lagéométrie*(1637)中.没有评论,他介绍了使用字母表中的第一个字母表示*已知*数量,并使用最后一个字母表示*未知*数量." (14认同)
  • 这个答案太棒了. (6认同)

Phi*_*ier 5

x是阿拉伯语单词的欧洲音译???(发音为“chi”或“chaï”。或“tchi”,取决于口音)。这个词的意思是“东西”或“某物”,最早被阿拉伯和伊朗数学家用作符号,用于在数学表达式中指定未知或不确定的值。

回到这些时代,“x”可能被翻译者和欧洲数学家认为是最接近这个未知符号的符号。

  • 我不知道这个网站上有巨魔……而且,运气不好,阿尔法和欧米茄不是来自中东,而是来自希腊。 (2认同)