220 34592 <f936c4ce-7661-4785-a017-5d427c25776b@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Todd Fleming <tbfleming@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: operator try (was Re: Proposal: Monadic
 operations for std::optional)
Date: Wed, 4 Oct 2017 06:11:48 -0700 (PDT)
Lines: 146
Approved: news@gmane.org
Message-ID: <f936c4ce-7661-4785-a017-5d427c25776b@isocpp.org>
References: <f82efc4a-eabd-1580-c0ce-7ada7f21c164@gmail.com>
 <CANh-dXmzW7bJBRcXbevtVsUwAsMidpLnuyEyOtnyNSByFWK36Q@mail.gmail.com>
 <49346690-6184-690b-bba5-0c2c0db4b8f0@wanadoo.fr>
 <7afe3e3e-7f0c-406b-a44e-ff38834c8d39@isocpp.org>
 <71754ee5-bdbd-4826-82f9-a0ccb4950335@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_8174_1486704175.1507122708969"
X-Trace: blaine.gmane.org 1507122714 29431 195.159.176.226 (4 Oct 2017 13:11:54 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Wed, 4 Oct 2017 13:11:54 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDN5JUVZSIFBBFN42PHAKGQEH5UCJYI@isocpp.org Wed Oct 04 15:11:46 2017
Return-path: <std-proposals+bncBDN5JUVZSIFBBFN42PHAKGQEH5UCJYI@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-io0-f198.google.com ([209.85.223.198])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDN5JUVZSIFBBFN42PHAKGQEH5UCJYI@isocpp.org>)
	id 1dzjSi-0006en-5E
	for gclcip-std-proposals@m.gmane.org; Wed, 04 Oct 2017 15:11:44 +0200
Original-Received: by mail-io0-f198.google.com with SMTP id j123sf701793ioe.15
        for <gclcip-std-proposals@m.gmane.org>; Wed, 04 Oct 2017 06:11:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=DFbCxjLhhNHR7dIJrW+dL6Cyd2VWCGNTfsQcf6k0B78=;
        b=ScimO35iqfiKvg6Ix1RBrNPiJLlShVZX2wohY1bE42fHpMCZ3xDEea7DHf5A3eihtK
         BN1j3xgHLeFUh9LorQvE+opr2Ax5dpJ8/GJcOsrhAFuo3dIV/hWfK7nVs4Ro+s9kTiDN
         oMYTnhKFyRGQdGg73OqkLnQ5b7PDuxwn/bPK/2PyXd44sR1EnAI+xmPV1svoRv2GfLwW
         yNy75cPyqgURDZ1r85rZQaoZ7A1lvSfW+bFSsFi77yqw3Hk6nGM06BQkFccgZ21gW9s4
         Gb8Rn33jCXHHIiNPtkoJq4HBYIW6BmQJpO2TqgTSwzqZCl4PsvCIo6kfKuGWW2ZNiM+4
         TE+g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=DFbCxjLhhNHR7dIJrW+dL6Cyd2VWCGNTfsQcf6k0B78=;
        b=e92GDiBCaLbzNGQCc+F8HxQA1ztR4RVOzYLUSrMlF6dlLn2eeWYZeH5ekruqbh8i6J
         WOqcCgOigzfZx/ro6x8zvqD3TIonLlve/eQhHC6JAd00IyPPfKe9ZUqel3blndgO/59M
         oZpfSIPR5HvnRmRL/xyqHQiPXBijGXoKLes7HKkbGKwNrHdxUGoDhojci7McXPrWF1ey
         VPF/YCxhjrhHObBmVJLgwQhLRn/w4hWIBQfiJzP9g0DgKaOKydVf2n53+Jy94V5M+ct9
         76ko++ol7PHedgCOC8aFZ075PRDzGUqqStGKN4RXM7lP7NLLuWqjuk1AVCd33AWcOsu3
         q/jA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:date:from:to:message-id:in-reply-to:references
         :subject:mime-version:x-original-sender:reply-to:precedence
         :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=DFbCxjLhhNHR7dIJrW+dL6Cyd2VWCGNTfsQcf6k0B78=;
        b=lngEH95bVGzLRm3lafxbqZ4jMbLIalg4BAaLWC8w+zKcx/iAu9BbG6cz6ipetPxgLa
         aKOqZPQLn8NiOEAlSXkiR66DhrjQB+/6CG5Fp1Hvmp8DOrDTcRXKyNEwSz8Ys0qJoSeg
         +UI1mmoTsYCQma6WciVsFf2SaOMiDWOeinBfn54VLzhRr4yt8orqvX8eogBZcfCpsKY8
         VvL4pp5s4LfvLDvOCmmKw6mI96L6um2RmQaRp5PcZGzoDyjesdnvLxRlw/ANusBVcqJQ
         w+yS5JXho2jiNNg+yZWusf1wExuje/Cxkp86Fw5X4GsADqTc7u00yMNWaFFZ/C0iTXJw
         nuCw==
X-Gm-Message-State: AHPjjUicLAzc3zS6DJe0UE/A0XoKM8aEhXfgIHp7wW2PKjA9x6zkcIkN
	GhoHbhsmzVO4lTFv2VZP5DDMRQ==
X-Google-Smtp-Source: AOwi7QBJD2VW7CaCJNp8YXrcjOIZV8NJzJMAx4PRkHXRpljgr4Ej19sxW/vYm+W0hSmL1jpHUU5CwQ==
X-Received: by 10.159.61.17 with SMTP id l17mr4661908uai.43.1507122711262;
        Wed, 04 Oct 2017 06:11:51 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.31.134.13 with SMTP id i13ls5017514vkd.7.gmail; Wed, 04 Oct
 2017 06:11:49 -0700 (PDT)
X-Received: by 10.31.167.75 with SMTP id q72mr913863vke.22.1507122709518;
        Wed, 04 Oct 2017 06:11:49 -0700 (PDT)
In-Reply-To: <71754ee5-bdbd-4826-82f9-a0ccb4950335@isocpp.org>
X-Original-Sender: tbfleming@gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:34592
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/34592>

------=_Part_8174_1486704175.1507122708969
Content-Type: multipart/alternative; 
	boundary="----=_Part_8175_1223612708.1507122708970"

------=_Part_8175_1223612708.1507122708970
Content-Type: text/plain; charset="UTF-8"

Maybe a library function could do this:

return try_(a, f, g, h);

Todd

On Wednesday, October 4, 2017 at 12:24:33 AM UTC-4, Ray Hamel wrote:
>
> To clarify a bit, I'm suggesting infix `try` take an expression on the 
> left and a
> callable on the right, so
>
> return a try f try g try h;
>
> would be the semantic equivalent of the second snippet (with prefix `try
> `).
>
> Ray
>
> On Wednesday, October 4, 2017 at 12:04:35 AM UTC-4, Ray Hamel wrote:
>>
>> I think it would make more sense and be more functional / useful for `try` 
>> to
>> be an infix than a prefix operator, so you could do
>>
>> return f(a) try g try h;
>>
>> instead of
>>
>> auto b = try f(a);
>> auto c = try g(b);
>> return try h(c);
>>
>> Infix `try` would also be harder to confuse with its present use in
>> `try`-`catch` blocks. (And, for the same reason, simpler to parse as 
>> well).
>>
>> Ray
>>
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/f936c4ce-7661-4785-a017-5d427c25776b%40isocpp.org.

------=_Part_8175_1223612708.1507122708970
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Maybe a library function could do this:<div><br></div><div=
><div style=3D"border-width: 1px; border-style: solid; border-color: rgb(18=
7, 187, 187); background-color: rgb(250, 250, 250);"><code><span style=3D"c=
olor: rgb(0, 0, 136);">return</span><span style=3D"color: rgb(0, 0, 0);">=
=C2=A0try_(a,</span><span style=3D"color: rgb(0, 0, 0);">=C2=A0f,=C2=A0</sp=
an><span style=3D"color: rgb(0, 0, 0);">g,</span><span style=3D"color: rgb(=
0, 0, 0);">=C2=A0h)</span><span style=3D"color: rgb(102, 102, 0);">;</span>=
</code></div><br><div>Todd</div></div><div><br>On Wednesday, October 4, 201=
7 at 12:24:33 AM UTC-4, Ray Hamel wrote:<blockquote class=3D"gmail_quote" s=
tyle=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-le=
ft: 1ex;"><div dir=3D"ltr">To clarify a bit, I&#39;m suggesting infix `<spa=
n style=3D"font-family:courier new,monospace">try</span>` take an expressio=
n on the left and a<br>callable on the right, so<br><br><div style=3D"backg=
round-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:sol=
id;border-width:1px"><code><div><span style=3D"color:#008">return</span><sp=
an style=3D"color:#000"> a </span><span style=3D"color:#008">try</span><spa=
n style=3D"color:#000"> f </span><span style=3D"color:#008">try</span><span=
 style=3D"color:#000"> g </span><span style=3D"color:#008">try</span><span =
style=3D"color:#000"> h</span><span style=3D"color:#660">;</span></div></co=
de></div><br><div>would be the semantic equivalent of the second snippet (w=
ith prefix `<span style=3D"font-family:courier new,monospace">try</span>`).=
</div><div><br></div><div>Ray<br></div><br>On Wednesday, October 4, 2017 at=
 12:04:35 AM UTC-4, Ray Hamel wrote:<blockquote class=3D"gmail_quote" style=
=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"=
><div dir=3D"ltr"><div>I think it would make more sense and be more functio=
nal / useful for `<span style=3D"font-family:courier new,monospace">try</sp=
an>` to<br></div><div>be an infix than a prefix operator, so you could do</=
div><div><br></div><div><div style=3D"background-color:rgb(250,250,250);bor=
der-color:rgb(187,187,187);border-style:solid;border-width:1px"><code><div>=
<span style=3D"color:#008">return</span><span style=3D"color:#000"> f</span=
><span style=3D"color:#660">(</span><span style=3D"color:#000">a</span><spa=
n style=3D"color:#660">)</span><span style=3D"color:#000"> </span><span sty=
le=3D"color:#008">try</span><span style=3D"color:#000"> g </span><span styl=
e=3D"color:#008">try</span><span style=3D"color:#000"> h</span><span style=
=3D"color:#660">;</span><span style=3D"color:#000"><br></span></div></code>=
</div><br>instead of</div><div><br></div><div><div style=3D"background-colo=
r:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;border-=
width:1px"><code><div><span style=3D"color:#008">auto</span><span style=3D"=
color:#000"> b </span><span style=3D"color:#660">=3D</span><span style=3D"c=
olor:#000"> </span><span style=3D"color:#008">try</span><span style=3D"colo=
r:#000"> f</span><span style=3D"color:#660">(</span><span style=3D"color:#0=
00">a</span><span style=3D"color:#660">);</span><span style=3D"color:#000">=
<br></span><span style=3D"color:#008">auto</span><span style=3D"color:#000"=
> c </span><span style=3D"color:#660">=3D</span><span style=3D"color:#000">=
 </span><span style=3D"color:#008">try</span><span style=3D"color:#000"> g<=
/span><span style=3D"color:#660">(</span><span style=3D"color:#000">b</span=
><span style=3D"color:#660">);</span><span style=3D"color:#000"><br></span>=
<span style=3D"color:#008">return</span><span style=3D"color:#000"> </span>=
<span style=3D"color:#008">try</span><span style=3D"color:#000"> h</span><s=
pan style=3D"color:#660">(</span><span style=3D"color:#000">c</span><span s=
tyle=3D"color:#660">);</span><span style=3D"color:#000"><br></span></div></=
code></div><br>Infix `<span style=3D"font-family:courier new,monospace">try=
</span>` would also be harder to confuse with its present use in</div><div>=
`<span style=3D"font-family:courier new,monospace">try</span>`-<span style=
=3D"font-family:courier new,monospace"><font face=3D"arial,sans-serif">`</f=
ont>catch<font face=3D"arial,sans-serif">` blocks. (And, for the same reaso=
n, simpler to parse as well).</font></span></div><div><span style=3D"font-f=
amily:courier new,monospace"><font face=3D"arial,sans-serif"><br></font></s=
pan></div><div><span style=3D"font-family:courier new,monospace"><font face=
=3D"arial,sans-serif">Ray</font></span><br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padd=
ing-left:1ex"><div text=3D"#000000" bgcolor=3D"#FFFFFF"><br>
   =20
  </div>

</blockquote></div></blockquote></div></blockquote></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/f936c4ce-7661-4785-a017-5d427c25776b%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/f936c4ce-7661-4785-a017-5d427c25776b=
%40isocpp.org</a>.<br />

------=_Part_8175_1223612708.1507122708970--

------=_Part_8174_1486704175.1507122708969--

.
