On Thu, Jan 03, 2002 at 05:10:56PM +0000, Malcolm Wallace wrote:
> This program:
>
> module Main where
> f = map (++"a"++"b")
> g = map ("a"++"b"++)
> main = do print (f ["x","y","z"])
> print (g ["x","y","z"])
>
> gives the following error messages with ghc (versions 4.08.2 and 5.02):
>
> plusplus.hs:3:
> The operator `++' [infixr 5] of a section
> must have lower precedence than the operand `++' [infixr 5]
> In the section: `(++ ("a" ++ "b"))'
>
> I believe this is the wrong behaviour - the first (right) section is
> perfectly valid Haskell'98 because the operator is right associative.
> Hugs, hbc, and nhc98 all accept it. Check also section 3.5 (p.17)
> of the Report.
The context free grammar in appendix B (and at the start of section 3)
defines right sections as
( qop(a,i) expi+1 )
which contradicts 3.5. The additional production to
( qop(r,i) rexpi )
could be added, and similarly for left sections.
The brackets added to the error would make the section valid anyway
which should perhaps be fixed regardless.
Thanks
Ian
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs