我对Haskell中运算符优先级的规则感到困惑.
更具体地说,为什么:
*Main> 2 * 3 `mod` 2
0
Run Code Online (Sandbox Code Playgroud)
与此不同?
*Main> 2 * mod 3 2
2
Run Code Online (Sandbox Code Playgroud)
Pub*_*bby 13
函数调用绑定最紧密,等等
2 * mod 3 2
Run Code Online (Sandbox Code Playgroud)
是相同的
2 * (mod 3 2)
Run Code Online (Sandbox Code Playgroud)
请记住,mod这里没有用作操作员,因为没有反引号.
现在,当mod在中缀形式中使用时,它的优先级为7,(*)也有.由于它们具有相同的优先级,并且是左关联的,因此只需从左到右进行解析:
(2 * 3) `mod` 2
Run Code Online (Sandbox Code Playgroud)