haskell operator precedence
Hi, Is the following legal Haskell? infixr 0 `foo` infixr 0 `bar` x `foo` y = "foo(" ++ x ++ "," ++ y ++ ")" x `bar` y = "bar(" ++ x ++ "," ++ y ++ ")" dubious a b c = a `foo` b `bar` c According to the grammar in the Haskell report, I don't think it is. However, ghc-0.24 (ancient, I know) and Hugs 1.3 both accept it without complaint. -- Fergus Henderson [EMAIL PROTECTED] | "I have always known that the pursuit WWW: http://www.cs.mu.oz.au/~fjh | of excellence is a lethal habit" PGP: finger [EMAIL PROTECTED] | -- the last words of T. S. Garp.
Re: haskell operator precedence
| However, in return, perhaps somebody can supply me with parse trees for | the following: | | - - 1(accepted by nhc and hbc) | (- 1 `n6` 1) where infix 6 `n6` (accepted by nhc, hbc, ghc) | (- 1 `r6` 1) where infixr 6 `r6` (accepted by nhc, hbc, ghc) | | As I read the grammar (for 1.3), all of these should be illegal. In | fact, the compilers don't even give consistent answers for the last | example: ghc and nhc treat it as (-(1 `r6` 1)) while hbc treats it | as ((-1) `r6` 1). Good point! I've fixed this in GHC. It might or might not make it into 2.02 which is in build-and-tar mode at the moment. Simon