元组使用特殊语法吗?

时间:2014-07-26 12:44:19

标签: haskell operators

我正在学习哈斯克尔。我知道可以通过两种方式使用中缀运算符:

  • (+) 1 2
  • 1 + 2

但元组怎么样?我可以写:(,) 1 2但是我不能写1 , 2。为什么?为什么我必须使用括号并写(1,2)?它是某种特殊的语法还是我只是缺少一些东西?

1 个答案:

答案 0 :(得分:11)

是的,元组语法很特殊。元组类型也是特殊的(具有单个变体的data类型的语法糖)。请注意(a, b, c)((a, b), c)以及(a, (b, c))都是不同的类型:与普通运算符不同,元组构造不仅仅是可以嵌套的二元运算,还有n元元组构造运算符(几乎)任何n。我猜想二元情形的特殊外壳不会被认为是优雅的。

尝试允许没有括号的n元组元结构也可以使一些更复杂的语法与一些令人惊讶的极端情况(参见Python)。