# 021: infixl_add_mul2.hs で演算子の優先順位が不適切 [↑up](bunny_notes) - issued: 2020-04-13 - 分類: A サンプルコードが fail - status: Closed (2020-04-13) ## 現象 以下のコードをコンパイル、実行すると、結果が 20 になる: infixl_add_mul2.hs: $$
{ x :: Integer x = 2 + 3 * 4 main = print x $$} ## 調査ログ ### 2020-04-13 lib/Prelude.hs に四則演算についての infixl 宣言を追加して解決。 $${ diff --git a/compiler/lib/Prelude.hs b/compiler/lib/Prelude.hs index 67675ea..c326a8d 100644 --- a/compiler/lib/Prelude.hs +++ b/compiler/lib/Prelude.hs @@ -3,6 +3,9 @@ module Prelude where -- Qualified name of (:) is (Prim.:) -- infixr 5 : +infixl 7 *, /, `quot`, `rem`, `div`, `mod` +infixl 6 +, - + infixl 1 >>, >>= class Monad m where $$}