[ghc-steering-committee] RecordDotSyntax: please express a view

Simon Peyton Jones simonpj at microsoft.com
Tue Dec 10 14:27:42 UTC 2019


|  To be concrete, I propose this:

Not concrete enough.  I don't understand 

|  prefix             with a ( before the .: field selector
|                     otherwise: field access

What does (f a .b c .d e) mean?

You may be arguing that naked `.x` is a *postfix operator*, rather like factorial when we write 5!.   If so, it should have a precedence etc, and presumably binds less tightly than function application.  So
	f a .b c .d e
would presumably mean
	((f a).b c).d e

That might be OK.  I don’t recall the discussion articulating it like this, but it seems defensible.

Simon

|  -----Original Message-----
|  From: Richard Eisenberg <rae at richarde.dev>
|  Sent: 10 December 2019 14:17
|  To: Simon Peyton Jones <simonpj at microsoft.com>
|  Cc: Joachim Breitner <mail at joachim-breitner.de>; ghc-steering-
|  committee at haskell.org
|  Subject: Re: [ghc-steering-committee] RecordDotSyntax: please express
|  a view
|  
|  I'm in support of this proposal.
|  
|  I don't think it's fantastic. (In particular, I'm bothered about the
|  lack of polymorphic update.) But it seems willfully disdainful of our
|  users if we don't do *something*. This is the closest we've gotten to
|  a solution here. Let's not turn down now. And perhaps with
|  impredicativity, new doors will open up in the future.
|  
|  As to the Great Whitespace Debate: I prefer requiring the parens for
|  the selector section: (.foo). It makes this more like other sections.
|  A related question (that seems unconsidered by the proposal) is: if we
|  require parens for the section, what does a bare `.foo` mean? If we
|  don't allow
|  
|  >  x.foo
|  >   .bar
|  >   .baz
|  
|  then what do users do if they have long field names? Are we reduced to
|  writing
|  
|  >  (x.foo.bar
|  >     ).baz
|  
|  ? That's awful. I remember this coming up in the commentary, but I'm
|  not quite sure how to search for it.
|  
|  To be concrete, I propose this:
|  
|  Position of .      Meaning
|  --------           -------
|  tight infix        with a conid before the .: module qualification
|                     with anything else before the .: field access
|  suffix             parse error
|  prefix             with a ( before the .: field selector
|                     otherwise: field access
|  loose infix        normal, user-definable operator (defined to be
|  composition in the Prelude)
|  
|  Note that the lexer must tag the . with its position, and then parsing
|  is easy to implement. Effectively, a prefix . slurps up all the
|  preceding whitespace. No weird precedence rules necessary.
|  
|  To be clear: I don't feel very strongly on this point, and I support
|  the proposal with any discussed conclusion to the Great Whitespace
|  Debate. Yet, as a committee member, I make my vote as I have written
|  here.
|  
|  Richard
|  
|  
|  > On Dec 10, 2019, at 12:47 PM, Simon Peyton Jones via ghc-steering-
|  committee <ghc-steering-committee at haskell.org> wrote:
|  >
|  > |  About the contentious issue of (.foo) vs. .foo, I am squarely in
|  the
|  > |  (.foo) camp,
|  >
|  > Although I recommended allowing naked .foo, if there is a consensus
|  on the committee for (.foo), with a naked .foo being illegal, then I'm
|  quite willing to support that position too.   After all, it just makes
|  more programs illegal, we can always allow naked .foo later.
|  >
|  > I don't think anyone is proposing that
|  > 	f g .x h .y z
|  > means
|  > 	f (g.x) (h.y) z
|  > I would cordially dislike that, as I do the current record update
|  syntax precedence rules.
|  >
|  > Simon
|  >
|  > |  -----Original Message-----
|  > |  From: ghc-steering-committee <ghc-steering-committee-
|  > |  bounces at haskell.org> On Behalf Of Joachim Breitner
|  > |  Sent: 10 December 2019 11:41
|  > |  To: ghc-steering-committee at haskell.org
|  > |  Subject: Re: [ghc-steering-committee] RecordDotSyntax: please
|  express
|  > |  a view
|  > |
|  > |  Hi,
|  > |
|  > |  TL;DR: Support acceptance, preference for (.foo) over .foo.
|  > |
|  > |  I guess many people are excited, so overall good to get this.
|  > |
|  > |  I recently stopped using Haskell for something where readability
|  was
|  > |  the primary goal for lack of nested access and updates. So yay!
|  :-)
|  > |
|  > |  I am a bit unhappy about the “Higher-rank fields” problem. Not
|  that I
|  > |  use such field often, but it came up in the “Overloaded do”
|  proposal.
|  > |  Maybe accepting this will increase the chances of a getField
|  variant
|  > |  that works even in impredicative cases.
|  > |
|  > |  I hope pattern matching will follow, but no need to have it in
|  this
|  > |  proposal.
|  > |
|  > |
|  > |  About the contentious issue of (.foo) vs. .foo, I am squarely in
|  the
|  > |  (.foo) camp, for all the gut-feeling reasons given elsewhere in
|  > |  abundance. My main reasons: feels like a syntactic section to me,
|  and
|  > |  less danger of wat effects for people coming from languages with
|  the
|  > |
|  > |    a.foo
|  > |     .bar
|  > |     .baz
|  > |
|  > |  idiom…
|  > |
|  > |
|  > |  I will not veto the current form, but Eric may be in less of a
|  > |  minority
|  > |  that he thinks.
|  > |
|  > |
|  > |
|  > |  The precedence rule
|  > |
|  > |     f a.b.c 10
|  > |
|  > |  being
|  > |
|  > |     f (a.b.c) 10
|  > |
|  > |  makes sense when one comes from Ocaml or similar languages, or
|  has
|  > |  thought about record updates for a long time. There is a trace of
|  a
|  > |  feeling that this is un-Haskellish in the same way as
|  > |
|  > |     f a { b = c } 10
|  > |
|  > |  is. But at least we don't allow spaces around the dot, so it is
|  > |  probably fine.
|  > |
|  > |
|  > |  Cheers,
|  > |  Joachim
|  > |
|  > |
|  > |
|  > |
|  > |
|  > |
|  > |  Am Montag, den 09.12.2019, 22:57 +0000 schrieb Simon Peyton Jones
|  via
|  > |  ghc-steering-committee:
|  > |  > Dear steering committee
|  > |  >
|  > |  > I'm the shepherd for the RecordDotSyntax proposal.
|  > |  >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
|  > |  ub.com%2Fghc-proposals%2Fghc-
|  > |
|  proposals%2Fpull%2F282&data=02%7C01%7Csimonpj%40microsoft.com%7C84
|  > |
|  3ae99c854745dc9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%
|  > |
|  7C0%7C637115748567847774&sdata=gcW6OmpCccSbVaC5AmkFdJtrpwbdo1EIEy7
|  > |  stuHOeq0%3D&reserved=0
|  > |  >
|  > |  > I recommend acceptance:
|  > |  >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
|  > |  ub.com%2Fghc-proposals%2Fghc-
|  proposals%2Fpull%2F282%23issuecomment-
|  > |
|  563477691&data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c854745d
|  > |
|  c9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6371157
|  > |
|  48567847774&sdata=9bwoFCaNRGH62hV7LvKvCPbiFXYQjAaSPgUKe6ttLtw%3D&a
|  > |  mp;reserved=0
|  > |  >
|  > |  > Please reads the proposal, and as much of the discussion as you
|  feel
|  > |  able, and respond in the next week or two to indicate your views.
|  > |  >
|  > |  > Remember: ask technical questions on the Github discussion
|  thread,
|  > |  and use this mailing list for more evaluative discussion of
|  judgement
|  > |  or opinion.
|  > |  >
|  > |  > I'd love every member of the committee to express a view.  This
|  > |  proposal has attracted a lot of interest.
|  > |  >
|  > |  > Thanks
|  > |  >
|  > |  > Simon
|  > |  >
|  > |  > > -----Original Message-----
|  > |  > > From: ghc-steering-committee <ghc-steering-committee-
|  > |  bounces at haskell.org>
|  > |  > > On Behalf Of Joachim Breitner
|  > |  > > Sent: 28 November 2019 10:11
|  > |  > > To: ghc-steering-committee at haskell.org
|  > |  > > Subject: [EXTERNAL] [ghc-steering-committee] Please review
|  #282:
|  > |  > > RecordDotSyntax, Shepherd: Simon PJ
|  > |  > >
|  > |  > > Dear Committee,
|  > |  > >
|  > |  > > this is your secretary speaking:
|  > |  > >
|  > |  > > RecordDotSyntax language extension proposal has been proposed
|  by
|  > |  Neil
|  > |  > > Mitchell and Shayne Fletcher
|  > |  > >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
|  > |  ub.com%2Fghc-proposals%2Fghc-
|  > |
|  proposals%2Fpull%2F282&data=02%7C01%7Csimonpj%40microsoft.com%7C84
|  > |
|  3ae99c854745dc9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%
|  > |
|  7C0%7C637115748567847774&sdata=gcW6OmpCccSbVaC5AmkFdJtrpwbdo1EIEy7
|  > |  stuHOeq0%3D&reserved=0
|  > |  > >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
|  > |  ub.com%2Fshayne-fletcher-da%2Fghc-proposals%2Fblob%2Frecord-dot-
|  > |
|  &data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c854745dc9a3f08d7
|  > |
|  7d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6371157485678477
|  > |
|  74&sdata=Kno9%2Fitm3REWI6roXdLQ88tSpDA%2FeJvY8bb4XKKJI1g%3D&re
|  > |  served=0
|  > |  > > syntax/proposals/0000-record-dot-syntax.md
|  > |  > >
|  > |  > > This is going to be a tricky one. It is partly about
|  whitespace,
|  > |  so it
|  > |  > > has attracted a _lot_ of community interest, by far the most
|  so
|  > |  far. To
|  > |  > > navigate that ship, I propose Simon PJ as the shepherd,
|  because he
|  > |  is a
|  > |  > > excellent moderator and community manager, and because he has
|  the
|  > |  > > necessary authority to hopefully get a verdict accepted.
|  > |  > >
|  > |  > > Please reach consensus as described in
|  > |  > >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
|  > |  ub.com%2Fghc-proposals%2Fghc-proposals%23committee-
|  > |
|  process&data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c854745dc9
|  > |
|  a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637115748
|  > |
|  567847774&sdata=0eXaTaxw81Z2szF2KGZ3qxbJgSgx3wQZUii8rr1XytM%3D&amp
|  > |  ;reserved=0
|  > |  > > I suggest you make a recommendation, in a new e-mail thread
|  with
|  > |  the
|  > |  > > proposal number in the subject, about the decision, maybe
|  point
|  > |  out
|  > |  > > debatable points, and assume that anyone who stays quiet
|  agrees
|  > |  with you.
|  > |  > >
|  > |  > > Thanks,
|  > |  > > Joachim
|  > |  > > --
|  > |  > > Joachim Breitner
|  > |  > >   mail at joachim-breitner.de
|  > |  > >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.j
|  > |  oachim-
|  > |
|  breitner.de%2F&data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c85
|  > |
|  4745dc9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63
|  > |
|  7115748567847774&sdata=aeTui1sCsvRGKFzUnyZHzKL%2FwBF0NLDGR%2BmJ5yT
|  > |  UfrE%3D&reserved=0
|  > |  > >
|  > |  > > _______________________________________________
|  > |  > > ghc-steering-committee mailing list
|  > |  > > ghc-steering-committee at haskell.org
|  > |  > >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail
|  > |  .haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-
|  > |
|  committee&data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c854745d
|  > |
|  c9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6371157
|  > |
|  48567847774&sdata=hpyFheQhmtsGFHpKDn1US%2FIwi8OmgWdpk1IdT5v3YDo%3D
|  > |  &reserved=0
|  > |  > _______________________________________________
|  > |  > ghc-steering-committee mailing list
|  > |  > ghc-steering-committee at haskell.org
|  > |  >
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail
|  > |  .haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-
|  > |
|  committee&data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c854745d
|  > |
|  c9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6371157
|  > |
|  48567847774&sdata=hpyFheQhmtsGFHpKDn1US%2FIwi8OmgWdpk1IdT5v3YDo%3D
|  > |  &reserved=0
|  > |  --
|  > |  Joachim Breitner
|  > |    mail at joachim-breitner.de
|  > |
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.j
|  > |  oachim-
|  > |
|  breitner.de%2F&data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c85
|  > |
|  4745dc9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63
|  > |
|  7115748567857762&sdata=id%2Bw%2FzvZX%2FbgV%2FBovQ85ByF7KFdkU8NKtxU
|  > |  eygGeYKU%3D&reserved=0
|  > |
|  > |  _______________________________________________
|  > |  ghc-steering-committee mailing list
|  > |  ghc-steering-committee at haskell.org
|  > |
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail
|  > |  .haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-
|  > |
|  committee&data=02%7C01%7Csimonpj%40microsoft.com%7C843ae99c854745d
|  > |
|  c9a3f08d77d65d0d4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6371157
|  > |
|  48567857762&sdata=zUhQrs20IkgPfD4lBZIxTYQSBFVlIOP7itXhTTLut6A%3D&a
|  > |  mp;reserved=0
|  > _______________________________________________
|  > ghc-steering-committee mailing list
|  > ghc-steering-committee at haskell.org
|  >
|  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail
|  .haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-
|  committee&data=02%7C01%7Csimonpj%40microsoft.com%7Cc4905b1dc7a4474
|  4c43b08d77d7b9d5b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6371158
|  42192614669&sdata=Xh0SopxeypTlM%2B31iuHJNQMRzNt2sTLGXbdmYjGu3CQ%3D
|  &reserved=0



More information about the ghc-steering-committee mailing list