<div dir="ltr"><div>What about introducing both "mcase ... of" and "\mcase"? That way we keep the existing similarity between "case ... of" and "\case", but extended to multiple arguments.</div><div><br></div><div>Alejandro<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El jue., 17 sept. 2020 a las 17:23, Simon Peyton Jones via ghc-steering-committee (<<a href="mailto:ghc-steering-committee@haskell.org">ghc-steering-committee@haskell.org</a>>) escribió:<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 class="gmail-m_8152390687518755871WordSection1">
<p class="MsoNormal"><span>If it was re-cast as \mcase, which is just like \case but allows n-ary functions, I’d find it quite acceptable.  The two then become extremely close, so there’s a very low cognitive load.  
<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>GHC’s internals already allow this, and it seems surprisingly non-orthogonal that the source language does not.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>We could kill off MultiWayIf.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>But I don’t feel strongly.  If a consensus does not emerge, maybe we should just vote.<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"> 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 Marlow<br>
<b>Sent:</b> 17 September 2020 15:53<br>
<b>To:</b> Richard Eisenberg <<a href="mailto:rae@richarde.dev" target="_blank">rae@richarde.dev</a>><br>
<b>Cc:</b> Simon Peyton Jones via ghc-steering-committee <<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`<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Cale's rationale chimes with me. A lot - I feel like I might have even made the same point in previous threads on this. I think of the tradeoff like this:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
* The lack of \of doesn't really hurt very much. In fact, arguably by forcing the author to type some more characters and give something a name, we get code that's clearer for the reader. (yes this is very subjective, but syntax is).<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
* The addition of \of *would* hurt new users of the language. Only a bit, but every bit makes things worse, and things are already quite bad.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Cheers<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Simon<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
<u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
On Thu, 3 Sep 2020 at 23:02, Richard Eisenberg <<a href="mailto:rae@richarde.dev" target="_blank">rae@richarde.dev</a>> wrote:<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">
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:6pt;margin-left:0cm">
Hi all,<br>
<br>
Proposal #302 was submitted to the committee and assigned to Cale. He has made a recommendation on the GitHub trail, but I don't believe the committee has discussed this among ourselves.<br>
<br>
PR: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fghc-proposals%2Fghc-proposals%2Fpull%2F302&data=02%7C01%7Csimonpj%40microsoft.com%7C956b41eaa3984a4a739d08d85b197bb4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637359513199745852&sdata=dTBwWAv4oSLAVZXcCimFWfeNygnz%2FKcadcWw0YNdcuk%3D&reserved=0" target="_blank">
https://github.com/ghc-proposals/ghc-proposals/pull/302</a><br>
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=02%7C01%7Csimonpj%40microsoft.com%7C956b41eaa3984a4a739d08d85b197bb4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637359513199755846&sdata=MusKqbiaRHp2rbPuyFQTYYiSP9%2FjGkwKKmPoPwRu1qc%3D&reserved=0" target="_blank">
https://github.com/JakobBruenker/ghc-proposals/blob/patch-1/proposals/0000-lambda-layout.md</a><br>
Cale's recommendation: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fghc-proposals%2Fghc-proposals%2Fpull%2F302%23issuecomment-666075014&data=02%7C01%7Csimonpj%40microsoft.com%7C956b41eaa3984a4a739d08d85b197bb4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637359513199755846&sdata=MiDN5T22uVYITKYiB3yyyqrhe%2FleEKLvJk%2FjnaiVI7Y%3D&reserved=0" target="_blank">
https://github.com/ghc-proposals/ghc-proposals/pull/302#issuecomment-666075014</a><br>
<br>
The idea, in brief, is to introduce a new syntax (guarded behind -XMultiWayLambda) \of. Here is an example, which gives you the idea:<br>
<br>
mplus :: Maybe Int -> Maybe Int -> Maybe Int<br>
mplus = \of<br>
  Nothing _ -> Nothing<br>
  _ Nothing -> Nothing<br>
  (Just x) (Just y) -> Just (x + y)<br>
<br>
The new keyword allows us to use a syntax similar to function definitions, but without repeating the name of the function. It is also like \case, but it allows multiple arguments. Guards are allowed, as usual.<br>
<br>
I really like this new syntax -- mostly because I find it very strange that we have to repeat the function name on every line. And then change the spacing when we change the function name. And I like the mnemonic "lambda of". And it allows me to write a where
 clause that is accessible in multiple different patterns, or an indented where clause that is usable in just one. If it didn't confuse readers, I would use this syntax all the time.<br>
<br>
Even so, I agree with Cale's recommendation to reject. We just have too much syntax! If someone were to come along and draft a concrete proposal of how we could, for example, use this syntax to replace both \case and if|, with a migration strategy, etc., then
 I might be in favor. Until then, I think we've spent our budget for cute, obscure bits of syntax.<br>
<br>
Richard<br>
_______________________________________________<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=02%7C01%7Csimonpj%40microsoft.com%7C956b41eaa3984a4a739d08d85b197bb4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637359513199765841&sdata=zraLb1BkWyd7RIDmN7GR%2B5IUJwzbetShFqcsp4RwLGQ%3D&reserved=0" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><u></u><u></u></p>
</blockquote>
</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>