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