Re: ppr of HsDo

2016-11-10 Thread Alan & Kim Zimmerman
As a follow up, I will be continuing with the least-invasive change, which
is to keep the existing braces/semis, and make sure that they are all
produced correctly.

Alan

On Thu, Nov 10, 2016 at 12:06 PM, Alan & Kim Zimmerman <alan.z...@gmail.com>
wrote:

> For context, I am putting in a test suite similar to the one for
> ghc-exactprint to ensure that the pretty printer always generates code that
> can be round tripped back to the original AST.
>
> This means that fears of some uncaught case requiring us do it the
> guaranteed safe way should be allayed.
>
> In the process I am updating the pretty printer.
>
> So the question really is, given the existence of that test suite, what
> style of code should we have in our messages, and in pretty printed code?
>
> Alan
>
>
> On Thu, Nov 10, 2016 at 12:02 PM, Simon Peyton Jones <
> simo...@microsoft.com> wrote:
>
>>
>>
>> It’s not about GHC’s programming style, is it?  It’s about what the
>> pretty-printer does.  If it were me I’d use braces and semicolons
>> everywhere, so that I could guarantee to parse it easily.
>>
>>
>>
>> But that’s not a strong opinion and I would willingly yield to others!
>>
>>
>>
>> Simon
>>
>>
>>
>> *From:* Alan & Kim Zimmerman [mailto:alan.z...@gmail.com]
>> *Sent:* 10 November 2016 08:31
>> *To:* Simon Peyton Jones <simo...@microsoft.com>
>> *Cc:* ghc-devs@haskell.org
>> *Subject:* Re: ppr of HsDo
>>
>>
>>
>> Thanks.
>>
>> And any thoughts on my proposal to do away with the braces/semi
>> completely?  I suspect GHC is the only significant body of code that uses
>> that style still.
>>
>> Alan
>>
>>
>>
>> On Thu, Nov 10, 2016 at 10:24 AM, Simon Peyton Jones <
>> simo...@microsoft.com> wrote:
>>
>> I think it’s because the  “;” is treated as part of the let not part of
>> the do.  After all, how does the implicit layout of the let know that the
>> let-bindings are finished?
>>
>>
>>
>> This should work
>>
>>
>>
>> foo
>>   = do { let { x = 1 };
>>  Just 5 }
>>
>>
>>
>> Now the let bindings are clearly brought to an end.  Or this
>>
>>
>>
>> foo
>>   = do { let x = 1
>>
>>; Just 5 }
>>
>>
>>
>> Now the “’;” is to the left of the x=1 and so brings the let’s implicit
>> layout to an end.
>>
>>
>>
>> But not this!
>>
>>
>>
>> foo
>>   = do { let x = 1; Just 5 }
>>
>>
>>
>> So it’s a bug in the pretty-printer, not the parser
>>
>>
>>
>> SImon
>>
>>
>>
>>
>>
>> *From:* ghc-devs [mailto:ghc-devs-boun...@haskell.org] *On Behalf Of *Alan
>> & Kim Zimmerman
>> *Sent:* 10 November 2016 07:01
>> *To:* ghc-devs@haskell.org
>> *Subject:* ppr of HsDo
>>
>>
>>
>> The pretty printer turns
>>
>> foo = do
>>   let x = 1
>>   Just 5
>>
>> into
>>
>> foo
>>   = do { let x = 1;
>>  Just 5 }
>>
>> which does not parse, complaining about "parse error on input ‘Just’"
>>
>> Is this a parser error or a ppr problem?  I am keen to fix the ppr to
>> output
>>
>>
>> foo
>>   = do let x = 1
>>Just 5
>>
>> but I am not sure if there is a parser bug too.
>>
>> Alan
>>
>>
>>
>
>
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: ppr of HsDo

2016-11-10 Thread Alan & Kim Zimmerman
For context, I am putting in a test suite similar to the one for
ghc-exactprint to ensure that the pretty printer always generates code that
can be round tripped back to the original AST.

This means that fears of some uncaught case requiring us do it the
guaranteed safe way should be allayed.

In the process I am updating the pretty printer.

So the question really is, given the existence of that test suite, what
style of code should we have in our messages, and in pretty printed code?

Alan


On Thu, Nov 10, 2016 at 12:02 PM, Simon Peyton Jones <simo...@microsoft.com>
wrote:

>
>
> It’s not about GHC’s programming style, is it?  It’s about what the
> pretty-printer does.  If it were me I’d use braces and semicolons
> everywhere, so that I could guarantee to parse it easily.
>
>
>
> But that’s not a strong opinion and I would willingly yield to others!
>
>
>
> Simon
>
>
>
> *From:* Alan & Kim Zimmerman [mailto:alan.z...@gmail.com]
> *Sent:* 10 November 2016 08:31
> *To:* Simon Peyton Jones <simo...@microsoft.com>
> *Cc:* ghc-devs@haskell.org
> *Subject:* Re: ppr of HsDo
>
>
>
> Thanks.
>
> And any thoughts on my proposal to do away with the braces/semi
> completely?  I suspect GHC is the only significant body of code that uses
> that style still.
>
> Alan
>
>
>
> On Thu, Nov 10, 2016 at 10:24 AM, Simon Peyton Jones <
> simo...@microsoft.com> wrote:
>
> I think it’s because the  “;” is treated as part of the let not part of
> the do.  After all, how does the implicit layout of the let know that the
> let-bindings are finished?
>
>
>
> This should work
>
>
>
> foo
>   = do { let { x = 1 };
>  Just 5 }
>
>
>
> Now the let bindings are clearly brought to an end.  Or this
>
>
>
> foo
>   = do { let x = 1
>
>; Just 5 }
>
>
>
> Now the “’;” is to the left of the x=1 and so brings the let’s implicit
> layout to an end.
>
>
>
> But not this!
>
>
>
> foo
>   = do { let x = 1; Just 5 }
>
>
>
> So it’s a bug in the pretty-printer, not the parser
>
>
>
> SImon
>
>
>
>
>
> *From:* ghc-devs [mailto:ghc-devs-boun...@haskell.org] *On Behalf Of *Alan
> & Kim Zimmerman
> *Sent:* 10 November 2016 07:01
> *To:* ghc-devs@haskell.org
> *Subject:* ppr of HsDo
>
>
>
> The pretty printer turns
>
> foo = do
>   let x = 1
>   Just 5
>
> into
>
> foo
>   = do { let x = 1;
>  Just 5 }
>
> which does not parse, complaining about "parse error on input ‘Just’"
>
> Is this a parser error or a ppr problem?  I am keen to fix the ppr to
> output
>
>
> foo
>   = do let x = 1
>Just 5
>
> but I am not sure if there is a parser bug too.
>
> Alan
>
>
>
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


RE: ppr of HsDo

2016-11-10 Thread Simon Peyton Jones via ghc-devs

It’s not about GHC’s programming style, is it?  It’s about what the 
pretty-printer does.  If it were me I’d use braces and semicolons everywhere, 
so that I could guarantee to parse it easily.

But that’s not a strong opinion and I would willingly yield to others!

Simon

From: Alan & Kim Zimmerman [mailto:alan.z...@gmail.com]
Sent: 10 November 2016 08:31
To: Simon Peyton Jones <simo...@microsoft.com>
Cc: ghc-devs@haskell.org
Subject: Re: ppr of HsDo

Thanks.
And any thoughts on my proposal to do away with the braces/semi completely?  I 
suspect GHC is the only significant body of code that uses that style still.
Alan

On Thu, Nov 10, 2016 at 10:24 AM, Simon Peyton Jones 
<simo...@microsoft.com<mailto:simo...@microsoft.com>> wrote:
I think it’s because the  “;” is treated as part of the let not part of the do. 
 After all, how does the implicit layout of the let know that the let-bindings 
are finished?

This should work

foo
  = do { let { x = 1 };
 Just 5 }

Now the let bindings are clearly brought to an end.  Or this

foo
  = do { let x = 1
   ; Just 5 }

Now the “’;” is to the left of the x=1 and so brings the let’s implicit layout 
to an end.

But not this!

foo
  = do { let x = 1; Just 5 }

So it’s a bug in the pretty-printer, not the parser

SImon


From: ghc-devs 
[mailto:ghc-devs-boun...@haskell.org<mailto:ghc-devs-boun...@haskell.org>] On 
Behalf Of Alan & Kim Zimmerman
Sent: 10 November 2016 07:01
To: ghc-devs@haskell.org<mailto:ghc-devs@haskell.org>
Subject: ppr of HsDo

The pretty printer turns

foo = do
  let x = 1
  Just 5
into

foo
  = do { let x = 1;
 Just 5 }
which does not parse, complaining about "parse error on input ‘Just’"
Is this a parser error or a ppr problem?  I am keen to fix the ppr to output


foo
  = do let x = 1
   Just 5
but I am not sure if there is a parser bug too.
Alan

___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: ppr of HsDo

2016-11-10 Thread Alan & Kim Zimmerman
Thanks.

And any thoughts on my proposal to do away with the braces/semi
completely?  I suspect GHC is the only significant body of code that uses
that style still.

Alan


On Thu, Nov 10, 2016 at 10:24 AM, Simon Peyton Jones <simo...@microsoft.com>
wrote:

> I think it’s because the  “;” is treated as part of the let not part of
> the do.  After all, how does the implicit layout of the let know that the
> let-bindings are finished?
>
>
>
> This should work
>
>
>
> foo
>   = do { let { x = 1 };
>  Just 5 }
>
>
>
> Now the let bindings are clearly brought to an end.  Or this
>
>
>
> foo
>   = do { let x = 1
>
>; Just 5 }
>
>
>
> Now the “’;” is to the left of the x=1 and so brings the let’s implicit
> layout to an end.
>
>
>
> But not this!
>
>
>
> foo
>   = do { let x = 1; Just 5 }
>
>
>
> So it’s a bug in the pretty-printer, not the parser
>
>
>
> SImon
>
>
>
>
>
> *From:* ghc-devs [mailto:ghc-devs-boun...@haskell.org] *On Behalf Of *Alan
> & Kim Zimmerman
> *Sent:* 10 November 2016 07:01
> *To:* ghc-devs@haskell.org
> *Subject:* ppr of HsDo
>
>
>
> The pretty printer turns
>
> foo = do
>   let x = 1
>   Just 5
>
> into
>
> foo
>   = do { let x = 1;
>  Just 5 }
>
> which does not parse, complaining about "parse error on input ‘Just’"
>
> Is this a parser error or a ppr problem?  I am keen to fix the ppr to
> output
>
>
> foo
>   = do let x = 1
>Just 5
>
> but I am not sure if there is a parser bug too.
>
> Alan
>
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


RE: ppr of HsDo

2016-11-10 Thread Simon Peyton Jones via ghc-devs
I think it’s because the  “;” is treated as part of the let not part of the do. 
 After all, how does the implicit layout of the let know that the let-bindings 
are finished?

This should work

foo
  = do { let { x = 1 };
 Just 5 }

Now the let bindings are clearly brought to an end.  Or this

foo
  = do { let x = 1
   ; Just 5 }

Now the “’;” is to the left of the x=1 and so brings the let’s implicit layout 
to an end.

But not this!

foo
  = do { let x = 1; Just 5 }

So it’s a bug in the pretty-printer, not the parser

SImon


From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of Alan & Kim 
Zimmerman
Sent: 10 November 2016 07:01
To: ghc-devs@haskell.org
Subject: ppr of HsDo

The pretty printer turns

foo = do
  let x = 1
  Just 5
into

foo
  = do { let x = 1;
 Just 5 }
which does not parse, complaining about "parse error on input ‘Just’"
Is this a parser error or a ppr problem?  I am keen to fix the ppr to output


foo
  = do let x = 1
   Just 5
but I am not sure if there is a parser bug too.
Alan
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


ppr of HsDo

2016-11-09 Thread Alan & Kim Zimmerman
The pretty printer turns

foo = do
  let x = 1
  Just 5

into

foo
  = do { let x = 1;
 Just 5 }

which does not parse, complaining about "parse error on input ‘Just’"

Is this a parser error or a ppr problem?  I am keen to fix the ppr to
output


foo
  = do let x = 1
   Just 5

but I am not sure if there is a parser bug too.

Alan
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs