> In the table of precedence in the original Report (now deleted in > the revised Report), it makes it clear that a rightward-extending > let, if, or lambda has a lower precedence than an infix operator, > so for instance the parse > > h = (let op x y = y in (3 `op`)) > > is correct and > > h = ((let op x y = y in 3) `op`) > > is not.
Actually the table claims that 'let' has a higher precedence than infix operators, so your second example above would be the correct parse according to the table. This may be one of the reasons it was removed, I can't remember now. Also, the table wasn't supposed to contain any extra information that isn't already in the grammar (Section 3: "As an aid to undertanding the grammar, Table 1 shows the relative precedences..."), so if the table is required to understand a particular parse, it would indicate a deficiency or ambiguity in the grammar. On the other hand, one way to fix this problem *is* to specify the relative precedence of 'let' & co. as compared to infix operators (namely that 'let' should have a lower precedence). That would be a reasonable fix for the H98 report, IMO. Cheers, Simon _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell