元组使用特殊语法吗?

pio*_*rek 5 haskell operators

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

  • (+) 1 2
  • 1 + 2

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

小智 11

是的,元组语法很特殊.元组类型也是特殊的(data具有单个变体的类型的语法糖).请注意,(a, b, c)((a, b), c)(a, (b, c))都是不同的类型:不同于普通的运营商,元组建设不仅是可以被嵌套二元运算,有n元元组建设运营商(几乎)任意n.我想,二元外壳的特殊外壳不会被认为是优雅的.

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