<div dir="ltr">I don't have anything to add to the ballot. I'm in favour of the proposal, and don't really have a preference between (1) and (4) (If \case didn't exist I'd like (4) best, but I don't know how to orchestrate a transition) <br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 24, 2021 at 1:44 PM Simon Peyton Jones via ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org">ghc-steering-committee@haskell.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div style="overflow-wrap: break-word;" lang="EN-GB">
<div>
<p class="MsoNormal"><span>I think \cases could completely replace \if.  Just replace \if with \cases.   Am I wrong about that?<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>If it could replace it, then deprecating \if in favour of \cases would make sense.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>I’m very relaxed about having both \case and \cases, because they do not require any extra mental scaffolding or complication.  \cases always works; you can use \case if there is one argument and
 you don’t want to write those extra parens (as indeed you don’t in case).<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Simon<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<div style="border-color:currentcolor currentcolor currentcolor blue;border-style:none none none solid;border-width:medium medium medium 1.5pt;padding:0cm 0cm 0cm 4pt">
<div>
<div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Alejandro Serrano Mena <<a href="mailto:trupill@gmail.com" target="_blank">trupill@gmail.com</a>>
<br>
<b>Sent:</b> 24 June 2021 12:03<br>
<b>To:</b> Simon Peyton Jones <<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>><br>
<b>Cc:</b> <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<b>Subject:</b> Re: [ghc-steering-committee] Proposal #302: `\of` (New Shepherd: Simon PJ)<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Dear all,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">To be honest, I’m still trying to make up my mind about this. If we were to accept the proposal, I think option (1) is the best one, since it otherwise `\case` would have a different behaviour depending on whether you have -XLambdaCase
 or -XExtendedLambdaCase on.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Having said so, the words of Simon M. and Richard resonate with me: do we really want \case, \cases, if|, all in the language?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- I would prefer one single way to do stuff, let’s say having a `cases … of` which also works as case, if|… and then a \cases for lambdas;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- but this is not the world we live in! We already have those things, and this would be yet another small syntactic addition, so we need to think about whether the language is becoming too big.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">So right now I’m in favor of option (X), reject the proposal.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Regards,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Alejandro<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">El 24 jun 2021 12:52:10, Simon Peyton Jones via ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a>> escribió:<u></u><u></u></p>
</div>
<blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0cm 0cm 0cm 6pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<p class="MsoNormal">Dear Steering committee<u></u><u></u></p>
<p class="MsoNormal">Simon and Joachim have responded, but only those two .  Please reply!<u></u><u></u></p>
<p class="MsoNormal">Thanks<u></u><u></u></p>
<p class="MsoNormal">Simon<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-color:currentcolor currentcolor currentcolor blue;border-style:none none none solid;border-width:medium medium medium 1.5pt;padding:0cm 0cm 0cm 4pt">
<div>
<div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> ghc-steering-committee <<a href="mailto:ghc-steering-committee-bounces@haskell.org" target="_blank">ghc-steering-committee-bounces@haskell.org</a>>
<b>On Behalf Of </b>Simon Peyton Jones via ghc-steering-committee<br>
<b>Sent:</b> 15 June 2021 13:52<br>
<b>To:</b> Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a>>;
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<b>Subject:</b> Re: [ghc-steering-committee] Proposal #302: `\of` (New Shepherd: Simon PJ)</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<p>|  I’d like to reassing shepherding of this one.<u></u><u></u></p>
<p>|  <u></u><u></u></p>
<p>|  It seems to be clear that we want “something like this”, there are many ways<u></u><u></u></p>
<p>|  to skin the cat, so it comes down to opinion and what we need is a decision<u></u><u></u></p>
<p>|  (or a call to votes). As with anything that’s possibly quite opinionated,<u></u><u></u></p>
<p>|  it’s good to have an authorative voice, so in this case, Simon PJ.<u></u><u></u></p>
<p>|  <u></u><u></u></p>
<p>|  Simon, can you either come up with a “all things considered, I think this<u></u><u></u></p>
<p>|  variant is the (narrowly) the best” recommendation or, alternative, a<u></u><u></u></p>
<p>|  “please vote on the following options” verdict?<u></u><u></u></p>
<p> <u></u><u></u></p>
<p>OK, to remind everyone<u></u><u></u></p>
<ol type="1" start="1">
<li>Here is the proposal: <a href="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%7Cd5c0c59924fc488bc80108d936ffa123%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637601294485922203%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=eRU47RcIzCunA6uxy7Q5D8PLXoelL1eKNfavFK3kIS8%3D&reserved=0" target="_blank">
https://github.com/JakobBruenker/ghc-proposals/blob/patch-1/proposals/0000-lambda-layout.md</a><u></u><u></u></li><li>Here is the discussion: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fghc-proposals%2Fghc-proposals%2Fpull%2F302&data=04%7C01%7Csimonpj%40microsoft.com%7Cd5c0c59924fc488bc80108d936ffa123%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637601294485932182%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=yz8M6OjNgzFNDiaT2JeLonmuDyXaFXJJseMwA9ZCsLQ%3D&reserved=0" target="_blank">
https://github.com/ghc-proposals/ghc-proposals/pull/302</a><u></u><u></u></li></ol>
<p> <u></u><u></u></p>
<p>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.<u></u><u></u></p>
<p> <u></u><u></u></p>
<p>The proposal offers four possible syntactic options.  After reviewing, I propose to discard (2) and (3) leaving these alternatives<u></u><u></u></p>
<p> <u></u><u></u></p>
<ul type="disc">
<li><b>Option (1)    </b>
\cases { p1 p2 -> rhs1; q1 q2 -> rhs2 }<u></u><u></u></li></ul>
<ul type="disc">
<ul type="circle">
<li>Lives alongside \case, but allows multiple patterns<u></u><u></u></li><li>Other keywords are possible, but I think it must be a variant on \case<u></u><u></u></li></ul>
</ul>
<ul type="disc">
<li><b>Option (4)</b>   Same, but use \case as the keyword<u></u><u></u></li></ul>
<ul type="disc">
<ul type="circle">
<li>Incompatible with existing \case => extended transition period, unhappy users<u></u><u></u></li><li>\case { (Just x) -> rhs1; Nothing -> rhs2 } will require parens forever, which in the common case of a one argument lambda see clunky.<u></u><u></u></li></ul>
</ul>
<ul type="disc">
<li><b>Option (X).</b>  Reject the proposal.<u></u><u></u></li></ul>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">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.<u></u><u></u></p>
<p class="MsoNormal">I think we’ll end up having to vote on this, which is fine when it’s a judgement call about syntax.   But first:<u></u><u></u></p>
<ul type="circle">
<li><b>Are there any other alternatives you
<i>strongly</i> want on the ballot?</b><u></u><u></u></li></ul>
<p class="MsoNormal">I say “strongly” because I don’t want to open up a big new debate… we at the stage of trying to narrow options.<u></u><u></u></p>
<p class="MsoNormal">Thanks<u></u><u></u></p>
<p class="MsoNormal">Simon<u></u><u></u></p>
</div>
</div>
</div>
</div>
<div>
<div>
<p class="MsoNormal">_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-committee&data=04%7C01%7Csimonpj%40microsoft.com%7Cd5c0c59924fc488bc80108d936ffa123%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637601294485942171%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=VqSeULnnIImr6PUnxHTwFWkAqNntR7S3AWAq4ofmaD4%3D&reserved=0" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><u></u><u></u></p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>

_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div>