Negation

Ian Lynagh igloo at earth.li
Sat Feb 13 21:44:39 EST 2010


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 <john at galois.com> 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?


More information about the Haskell-prime mailing list