Haskell の演算子の優先順位の規則について混乱しています。
より具体的には、これはなぜですか:
*Main> 2 * 3 `mod` 2
0
これと違う?
*Main> 2 * mod 3 2
2
Haskell の演算子の優先順位の規則について混乱しています。
より具体的には、これはなぜですか:
*Main> 2 * 3 `mod` 2
0
これと違う?
*Main> 2 * mod 3 2
2
関数呼び出しは最も緊密にバインドされるため、
2 * mod 3 2
と同じです
2 * (mod 3 2)
mod
バッククォートがないため、ここでは演算子として使用されていないことに注意してください。
現在、mod
が中置形式で使用されている場合、7 の優先順位があり、7 の優先順位(*)
もあります。それらは同じ優先順位を持ち、左結合であるため、単純に左から右に解析されます。
(2 * 3) `mod` 2
2 * 3 = 6、次にmod 2
= 3で、余り6 mod 2 = 0
はありません...あなたの答えもそこにあります。2番目のケースでは、2*を実行しています。その結果mod 3 2
はです2 * 1 = 2
。したがって、あなたの答えは2
....あなたの演算子の優先順位は同じままです、あなたは答えがそれに応じて表現されるようにそれを配置しただけです。