Ralf Hinze ralf@cs.uu.nl writes:
the version of hugs in the repository stumbles over the following program (which the february 2001 version compiles without problems):
....
instance Num Dir where a + b = toEnum (fromEnum a + fromEnum b) a - b = toEnum (fromEnum a - fromEnum b)
Parsing ERROR error.lhs:6 - Syntax error in declaration (unexpected `-')
Sorry, my fault - the use of infix (-) was wrongly disallowed as part of the patch which permitted the use of qualified method names in instance decls. My proposed fix is to add the following rule to parser.y qvarop_mipl : QVAROP {$$ = $1;} | '-' {$$ = gc1(varMinus);} | '`' QVARID '`' {$$ = gc3($2);} | varop_mi {$$ = $1;} ; and change the last alternative for the rule 'qfunlhs0' from | var qvarop_mi pat0 {$$ = gc3(ap2($2,$1,$3));} to | var qvarop_mipl pat0 {$$ = gc3(ap2($2,$1,$3));} Many thanks for reporting this, you can get the above code to work if you parenthesise the operator (which is what the Hugs Prelude consistently does, which is why this didn't show up before now.) --sigbjorn
participants (1)
-
Sigbjorn Finne