我正在学习哈斯克尔。我知道可以通过两种方式使用中缀运算符:
(+) 1 2
1 + 2
但元组怎么样?我可以写:(,) 1 2
但是我不能写1 , 2
。为什么?为什么我必须使用括号并写(1,2)
?它是某种特殊的语法还是我只是缺少一些东西?
答案 0 :(得分:11)
是的,元组语法很特殊。元组类型也是特殊的(具有单个变体的data
类型的语法糖)。请注意(a, b, c)
和((a, b), c)
以及(a, (b, c))
都是不同的类型:与普通运算符不同,元组构造不仅仅是可以嵌套的二元运算,还有n元元组构造运算符(几乎)任何n。我猜想二元情形的特殊外壳不会被认为是优雅的。
尝试允许没有括号的n元组元结构也可以使一些更复杂的语法与一些令人惊讶的极端情况(参见Python)。