好的,所以这是一个愚蠢的问题。我已经定义了一个新的#
运算符,我正在试图找出应该是什么样的固定性声明。
我希望{<1}}在 #
后应用。那么这是否意味着优先级应该更高或更低而不是++
? (++
优先为5。)
类型为++
。我想要左联想还是右联想?因为在我看来其中一个会进行(#) :: Foo -> Bar -> Foo
类型检查,而另一个则不会。
我知道这可能看似微不足道,但我总是总是似乎弄错了......
答案 0 :(得分:9)
$
优先级最低(0),$
始终应用&#34;最后&#34;因此,您希望#
的优先级低于++
。此外,您可以比较*
和+
的优先顺序。
左关联意味着x # y # z = (x # y) # z
(这也是左侧折叠的运作方式)。 x # (y # z)
不会输入检查,但会(x # y) # z
,因此您希望它 left 关联。