Okay, first steps: 1. A Trac ticket (#1318, http://hackage.haskell.org/trac/ghc/ticket/1318) (is "feature request" a good category, versus "task"?) 2. A test-case to make sure I don't break anything with existing '-' syntax. I'm guessing it should go in testsuite/tests/ghc-regress/parser/should_run/, although maybe since it checks Haskell-98 compatibility it should go in the testsuite/tests/h98 directory? (tested ghc and hugs, which both pass)
Isaac (test-case attached in case anyone wants to look at or review it; I'll send a darcs patch adding the testcase once I know where to put it)
-- !!! Haskell-98 prefix negate operator -- Make sure the parsing is actually the correct -- one by running this after it's compiled. negatedExpression = - (3 + 4) negatedTightlyBinding = -3^4 negatedNonSection = (- 3) negatedNonSectionWithHighPrecedenceOp = let { f = (+); infix 9 `f` } in ( -3 `f` 4 ) negatedNonSectionWithLowPrecedenceOp = let { f = (+); infix 1 `f` } in ( -3 `f` 4 ) negatedRightHandSide = -- This is actually not legal syntax: 3 * - 4 -- However, lower-precedence binary ops work. -- (see H98 syntax for exp, or imagine it's because it -- would parse differently as 3 * 0 - 4) let { f = (+); infix 1 `f` } in ( 3 `f` - 4 ) subtractionNotNegation = 3 -4 negativePattern = case -3 of { (- 3) -> case -4 of { - 4 -> True } } -- not legal H98 syntax: case -4 of { _x @ -4 -> -- (parentheses needed) case -5 of { ~ -5 -> subtractionNotNegationPattern = -- defines infix '-' (shadowing Prelude definition) let { 3 -4 = True } in (3 - 4) precedenceOfNegationCantBeChanged = let { (-) = undefined; infix 9 - } in (- 3 * 4) negationCantBeQualified = (Prelude.-3) 4 main = do print negatedExpression print negatedTightlyBinding print negatedNonSection print negatedNonSectionWithHighPrecedenceOp print negatedNonSectionWithLowPrecedenceOp print negatedRightHandSide print subtractionNotNegation print negativePattern print subtractionNotNegationPattern print precedenceOfNegationCantBeChanged print negationCantBeQualified
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users