我對Haskell中運算符優先級的規則感到困惑。
更具體地說,這是爲什麼:Haskell中的運算符優先級
*Main> 2 * 3 `mod` 2
0
不同?
*Main> 2 * mod 3 2
2
我對Haskell中運算符優先級的規則感到困惑。
更具體地說,這是爲什麼:Haskell中的運算符優先級
*Main> 2 * 3 `mod` 2
0
不同?
*Main> 2 * mod 3 2
2
函數調用結合最緊密的,因此
2 * mod 3 2
相同
2 * (mod 3 2)
記住mod
沒有被使用作爲一個經營者在這裏,因爲沒有反引號。
現在,當mod
以中綴形式使用時,其優先級爲7,其中(*)
也具有。因爲它們具有相同的precendence,和是左結合,它們被簡單地從左解析到右:
(2 * 3) `mod` 2
謝謝你解釋:) – 2013-02-26 02:17:59
2 * 3 = 6,然後mod 2
= 3餘數不...所以6 mod 2 = 0
是你的答案出現。 在你的第二個例子中,你正在做的是mod 3 2
的結果,即2 * 1 = 2
。因此,您的答案是2
....您的運營商優先級保持不變,您只是安排它,以便相應地表達答案。
感謝您的回答! – 2013-02-26 02:20:27
也見[前奏操作者優先級(http://stackoverflow.com/a/30288988/3041008) – mucaho 2015-05-17 16:19:43