我正在学习 haskell 。我知道中缀运算符可以通过两种方式使用:
(+) 1 2
1 + 2
但是元组呢?我可以写: (,) 1 2
但我不能写 1 , 2
。为什么?为什么我必须使用括号并编写(1,2)
?这是某种特殊的语法还是我只是遗漏了一些东西?
最佳答案
是的,元组语法很特殊。元组类型也很特殊(具有单个变体的数据类型的语法糖)。请注意 (a, b, c)
和 ((a, b), c)
和 (a, (b, c))
都是不同的类型:与普通运算符不同,元组构造不仅仅是可以嵌套的二元运算,还有(实际上)任何 n 的 n 元元组构造运算符。我想,二进制大小写的特殊外壳不会被认为是优雅的。
尝试允许不带括号的 n 元元组构造也可能会导致更复杂的语法,并出现一些令人惊讶的极端情况(参见 Python)。
关于haskell - 元组是否使用特殊语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971146/