= Proposal: !NegationBindsTightly = || Ticket || #135 || || Dependencies || names of other proposals on which this one depends || || Related || [wiki:NegativeSyntax] || == Compiler support == None at present == Summary == Which of these definitions are correct Haskell? {{{ x1 = 4 + -5 x2 = -4 + 5 x3 = 4 - -5 x4 = -4 - 5 x5 = 4 * -5 x6 = -4 * 5 }}} Ghc accepts x2, x4, x6 and rejects the others with a message like {{{ Foo.hs:4:7: Precedence parsing error cannot mix `+' [infixl 6] and prefix `-' [infixl 6] in the same infix expression }}} Hugs and Helium accept them all. I think that Hugs is right here. After all, there is no ambiguity in any of these expressions. And an application-domain user found this behaviour very surprising. == Description == Make unary minus bind more tightly than any other operator. But not more tightly than function application. == References == External references, papers, articles, support in other languages. == Report Delta == Something like deleting {{{ lexp6 -> - exp7 }}} and adding the production {{{ exp10 -> - fexp }}} but this relates to Haskell 98 rather than Haskell 2010, so the exact change will differ.