
On Sun, Feb 14, 2010 at 03:21:54AM +0100, Lennart Augustsson wrote:
I agree, I don't think this is a bug. If the grammar actually says that this is legal, then I think the grammar is wrong.
Then what do you think the grammar should say instead? That sections should be ( fexp qop ) ? I've never been keen on (1 * 2 +) actually; and I've just discovered that hugs doesn't accept it. Thanks Ian
On Sun, Feb 14, 2010 at 1:48 AM, John Launchbury
wrote: I don't think this is a bug. I do not expect to be able to unfold a definition without some syntactic issues. For example,
two = 1+1 four = 2 * two
but unfolding fails (four = 2 * 1 + 1). In general, we expect to have to parenthesize things when unfolding them.
John
On Feb 13, 2010, at 11:56 AM, Simon Marlow wrote:
On 09/02/10 21:43, S. Doaitse Swierstra wrote:
One we start discussing syntax again it might be a good occasion to reformulate/make more precise a few points.
The following program is accepted by the Utrecht Haskell Compiler (here we took great effort to follow the report closely ;-} instead of spending our time on n+k patterns), but not by the GHC and Hugs.
module Main where
-- this is a (rather elaborate) definition of the number 1 one = let x=1 in x
-- this is a definition of the successor function using section notation increment = ( one + )
-- but if we now unfold the definition of one we get a parser error in GHC increment' = ( let x=1 in x + )
Now that *is* an interesting example. I had no idea we had a bug in that area. Seems to me that it ought to be possible to fix it by refactoring the grammar, but I haven't tried yet.
Are there any more of these that you know about?