以下のコードをコンパイル、実行すると、結果が 20 になる:
infixl_add_mul2.hs:
x :: Integer x = 2 + 3 * 4 main = print x
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