[ghc-steering-committee] A plea for BlockArguments

Eric Seidel eric at seidel.io
Sat Dec 5 00:57:01 UTC 2020


I really like the idea of BlockArguments, but I haven't had enough of an opportunity to experiment with it to see how it feels in practice, so I marked it as "maybe". I'd be happy to hear from people who do have the experience though.

On Fri, Dec 4, 2020, at 13:34, Richard Eisenberg wrote:
> I almost sent out a plea for BlockArguments, but decided not to 
> overplea. I agree fully with Iavor here.
> 
> BlockArguments is a *simplification* over the status quo. Look at the 
> grammars in 
> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0090-block-arguments.rst#proposed-change-specification. We see that the new grammar (the second block) effectively has one fewer nonterminal (lexp becomes redundant). Consequently, users no longer have to remember which forms belong in which nonterminal.
> 
> One of the arguments against BlockArguments was that the change was so 
> trivial, likely saving fewer characters than writing the extension name 
> would take. But having it on my default makes it much more useful. 
> Indeed, I would advocate (at some appropriate time in the future) for 
> deprecating -XNoBlockArguments.
> 
> All that said, I don't use BlockArguments myself, because I find the 
> parentheses a tiny bit helpful. But nothing about this extension means 
> I can't keep doing what I've been doing.
> 
> NB: There is a big difference between BlockArguments and the weird 
> precedence around record-update. In `f r { field = new_val }`, we learn 
> that there is a record-update only *after* reading `r`, and so we 
> humans have to go back and re-parse. In the case of the re-associated 
> constructs in -XBlockArguments, there is a keyword herald (counting \ 
> as a keyword), and so no re-parsing is necessary.
> 
> Richard
> 
> > On Dec 4, 2020, at 11:26 AM, Spiwack, Arnaud <arnaud.spiwack at tweag.io> wrote:
> > 
> > The baseline question is: what is the consequence for someone who doesn't use the extension. I've never turned it on, I have no idea of the consequences. It's been around for some two years already (8.6). Is it commonly used?
> > 
> > On Fri, Dec 4, 2020 at 5:23 PM Iavor Diatchki <iavor.diatchki at gmail.com> wrote:
> >> While we are pleading for things, I'd really like to have BlockArguments on by default, as I use them all the time, and I really don't think that adding the extension to a module adds much information.
> >> 
> >> I realize that this is mostly a stylistic issue, and some programmers are going to prefer to write explicit parens, which is perfectly fine and in now way incompatible with BlockArguments.
> >> 
> >> Personally I like the extension because, while it takes a bit of getting used to, for me it leads to less syntactic noise in the code, which makes it easier to read and manipulate code.
> >> _______________________________________________
> >> ghc-steering-committee mailing list
> >> ghc-steering-committee at haskell.org
> >> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> > _______________________________________________
> > ghc-steering-committee mailing list
> > ghc-steering-committee at haskell.org
> > https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> 
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>


More information about the ghc-steering-committee mailing list