[ghc-steering-committee] Proposal #302: Multiway lambda: time to vote

Richard Eisenberg lists at richarde.dev
Sat Jul 17 02:29:14 UTC 2021


I'm struggling with this one, so I'll procrastinate by asking two clarifying questions:

1. Why does (2) not subsume MultiWayIf? The example in the MultiWayIf note seems to work just fine with syntax (2).

2. (2) and (4) seem to lose \case{}, which is useful in practice. Am I correct in saying that we'll lose \case{}?

I said I'm struggling, so I will explain why: I really want this new syntax, and I would advocate a coding style that uses it often. But I'm quite concerned about language bloat, and I don't like adding a new construct without also planning to remove redundant ones. I'm not sure how to balance these two desires. Perhaps a night's sleep will yield insight.

Richard

> On Jul 16, 2021, at 11:21 AM, Simon Peyton Jones via ghc-steering-committee <ghc-steering-committee at haskell.org> wrote:
> 
> Friends
> 
> Sorry to be slow on #302: multi-way lambda.   I was diverted by the POPL deadline.
> 
> I have not heard from Tom or Vitaly, I think, but I’ll take silence for agreement with the ballot list.
> 
> So it is time to vote! 
> 
> Please go here <https://docs.google.com/document/d/1NDXk5kKcLtkqhkSNESAC9jVrBn3yqS_Qe1vacAIKnDs/edit?usp=sharing>, and vote.
> 
> Feel free to add pros/cons to the list on that page.
> 
> Please vote by next Thursday, 22 July, at the latest.  It’s a balance of judgement, for sure, not technically complicated.
> 
> Simon
> 
>  
> 
> From: Simon Peyton Jones <simonpj at microsoft.com <mailto:simonpj at microsoft.com>> 
> Sent: 28 June 2021 10:45
> To: ghc-steering-committee at haskell.org <mailto:ghc-steering-committee at haskell.org>
> Cc: Simon Peyton Jones <simonpj at microsoft.com <mailto:simonpj at microsoft.com>>
> Subject: RE: [ghc-steering-committee] Proposal #302: `\of` (New Shepherd: Simon PJ)
>  
> 
> Dear Steering Committee 
> 
> Two weeks ago I asked
> 
> Are there any other alternatives you strongly want on the ballot?
>  
> 
> I got these responses
> 
> Joachim, Simon, Alejandro, Arnaud: nothing to add
> Vitaly, Eric, Tom, Richard, Vlad: no response
> I’d love to hear from the five of you, please.  I want to get a decision on this, and I can’t do that if I don’t hear from you.
> 
> Thanks
> 
> Simon
> 
>  
> 
> From: ghc-steering-committee <ghc-steering-committee-bounces at haskell.org <mailto:ghc-steering-committee-bounces at haskell.org>> On Behalf Of Simon Peyton Jones via ghc-steering-committee
> Sent: 15 June 2021 13:52
> To: Joachim Breitner <mail at joachim-breitner.de <mailto:mail at joachim-breitner.de>>; ghc-steering-committee at haskell.org <mailto:ghc-steering-committee at haskell.org>
> Subject: Re: [ghc-steering-committee] Proposal #302: `\of` (New Shepherd: Simon PJ)
>  
> 
> |  I’d like to reassing shepherding of this one.
> |  
> |  It seems to be clear that we want “something like this”, there are many ways
> |  to skin the cat, so it comes down to opinion and what we need is a decision
> |  (or a call to votes). As with anything that’s possibly quite opinionated,
> |  it’s good to have an authorative voice, so in this case, Simon PJ.
> |  
> |  Simon, can you either come up with a “all things considered, I think this
> |  variant is the (narrowly) the best” recommendation or, alternative, a
> |  “please vote on the following options” verdict?
>  
> OK, to remind everyone
> Here is the proposal: https://github.com/JakobBruenker/ghc-proposals/blob/patch-1/proposals/0000-lambda-layout.md <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FJakobBruenker%2Fghc-proposals%2Fblob%2Fpatch-1%2Fproposals%2F0000-lambda-layout.md&data=04%7C01%7Csimonpj%40microsoft.com%7C4ae55d76732448a0c3a508d93a1955ed%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637604702751348160%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Hvxpaew8S333OX7IvW9cfD003mLSZxpjRdjOotGVZMA%3D&reserved=0>
> Here is the discussion: https://github.com/ghc-proposals/ghc-proposals/pull/302 <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fghc-proposals%2Fghc-proposals%2Fpull%2F302&data=04%7C01%7Csimonpj%40microsoft.com%7C4ae55d76732448a0c3a508d93a1955ed%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637604702751358154%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=1aYsUzlUaixOxNvW2%2FEkLNbImFD7yLBT273QFA76ZEI%3D&reserved=0>
>  
> The basic idea is to extend to lambda all the facilities that you get with function definitions, especially multiple patterns and guards.   This seems clearly a good idea, whose only obstacle is syntactic.  There are no conceptual or specification challenges.  The only point at issue is that of concrete syntax.
>  
> The proposal offers four possible syntactic options.  After reviewing, I propose to discard (2) and (3) leaving these alternatives
>  
> Option (1)    \cases { p1 p2 -> rhs1; q1 q2 -> rhs2 }
> Lives alongside \case, but allows multiple patterns
> Other keywords are possible, but I think it must be a variant on \case
> Option (4)   Same, but use \case as the keyword
> Incompatible with existing \case => extended transition period, unhappy users
> \case { (Just x) -> rhs1; Nothing -> rhs2 } will require parens forever, which in the common case of a one argument lambda see clunky.
> Option (X).  Reject the proposal.
>  
> 
> Personally I favour (1).   I’m relaxed about having multiple ways of saying the thing (think of let vs where), and I see no harm provided the two constructs look and behave the same.   I’ve decided I like \cases precisely because it’s the plural of \case, which is exactly what is going on.
> 
> I think we’ll end up having to vote on this, which is fine when it’s a judgement call about syntax.   But first:
> 
> Are there any other alternatives you strongly want on the ballot?
> I say “strongly” because I don’t want to open up a big new debate… we at the stage of trying to narrow options.
> 
> Thanks
> 
> Simon
> 
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org <mailto:ghc-steering-committee at haskell.org>
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee <https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20210717/3becadd8/attachment-0001.html>


More information about the ghc-steering-committee mailing list