关联性
infixl vs infixr vs infix 描述了 parens 将被分组的哪一方。例如,考虑以下固定声明(在 base 中)
infixl 6 -
infixr 5 :
infix 4 ==
infixl 告诉我们 - 已经离开了关联,这意味着 1 - 2 - 3 - 4 被解析为
((1 - 2) - 3) - 4
infixr 告诉我们:具有正确的关联性,这意味着 1 : 2 : 3 : [] 被解析为
1 : (2 : (3 : []))
infix 告诉我们 == 不能在没有我们的情况下使用,包括括号,这意味着 True == False == True 是一个语法错误。另一方面,True == (False == True) 或 (True == False) == True 很好。
没有明确的固定声明的运算符是 infixl 9。