<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 6, 2015, at 1:21 AM, Roy Fu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi all,</div><div class=""><br class=""></div><div class="">Similar to the syntax ‘do try catch throw’ and ’throws’ for error handling, I propose another syntax for handling CPS functions or async call backs:</div></div></div></blockquote><div><br class=""></div><div>We are all very interested in doing things along these lines, but need to keep Swift 3 relatively focused to achieve our goals. &nbsp;Please bring this idea back up as work on Swift 3 is winding down, for consideration in Swift 4.</div><div><br class=""></div><div>-Chris</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">func</span> someFutureWrappedFunc(input: <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Int</span>) <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">future</span>-&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">String</span>{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(52, 149, 175);" class=""><span style="" class="">&nbsp; &nbsp;&nbsp;</span>doSomeStaffInBackground<span style="" class="">{ (result:</span>String<span style="" class="">) </span><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">in</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">fulfil</span>&nbsp;result</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><span class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(52, 149, 175);" class="">}</div></span></div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(4, 51, 255);" class="">do<span style="" class="">{</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(52, 149, 175);" class=""><span style="" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span><span style="" class=""> resultX = </span><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">perform</span><span style="" class="">&nbsp;</span>someFutureWrappedFunc<span style="" class="">(</span>param<span style="" class="">)</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span> resultY = <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">perform</span>&nbsp;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">anotherFutureWrappedFunc</span>(resultX)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><div style="margin: 0px; line-height: normal;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);" class="">let</span>&nbsp;final &nbsp; = resultX + resultY +&nbsp;<span style="color: rgb(4, 51, 255);" class="">perform</span>&nbsp;<span style="color: rgb(52, 149, 175);" class="">justAnotherFutureWrappedFunc</span>(resultX)</div></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">self</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">someLabel</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">text</span> = final</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">} <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">timeout</span>&nbsp;<span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span> context {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp; &nbsp; //maybe some additional information<br class="webkit-block-placeholder"></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div></div><div class=""><br class=""></div><div class="">the reason for this proposal is for the importance of async models in modern application &nbsp;architectures, and avoid such pyramids:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(52, 149, 175);" class="">doSomeStaffInBackground<span style="" class=""> { (resultX) -&gt; </span>Void<span style="" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">in</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">doSomeOtherStaff</span> { (resultY) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span> <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">in</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">if</span> resultY.<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">someCondition</span>(resultX) {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">evenMakesItMadness</span>(resultY) { (final) -&gt; <span style="color: rgb(52, 149, 175);" class="">Void</span> <span style="color: rgb(4, 51, 255);" class="">in</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class="">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #008f00" class="">//finally</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">For more context comparing this async syntax to the ‘do try catch’:</div><div class=""><br class=""></div><div class="">do try catch:</div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">enum</span> Result&lt;T&gt; {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">case</span> Success(T)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">case</span> Failure(ErrorType)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">func</span> flatMap&lt;T,U&gt; (result:<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Result</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span>&gt;, f:<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span>-&gt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Result</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>&gt;) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Result</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>&gt;{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">switch</span> result{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">case</span> .Success(<span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span> v): <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span> f(v)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">case</span> .Failure(<span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span> e): <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span> .<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Failure</span>(e)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">func</span>&nbsp;wrap1&lt;T,U&gt;(f:<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span> <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">throws</span>-&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span>-&gt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Result</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>&gt; {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span> {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">do</span>{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">try</span> .<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Success</span>(f($0))</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }<span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">catch</span> <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span> e{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span> .<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Failure</span>(e)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">func</span>&nbsp;wrap2&lt;T,U&gt;(f:<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span> -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Result</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>&gt;) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span> <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">throws</span>-&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(4, 51, 255);" class=""><span style="" class="">&nbsp; &nbsp; </span>return<span style="" class="">{</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">switch</span> f($0){</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">case</span> .Success(<span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span> v): <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span> v</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">case</span> .Failure(<span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">let</span> e): <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">throw</span> e</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div></div><div class=""><br class=""></div><div class="">async:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">func</span> flatMap&lt;T,U&gt; (async: (<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span> -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>, f:<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span> -&gt; (<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>-&gt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>) -&gt; (<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span> -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span> {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span>{ cont <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">in</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; async{ f($0)(cont) }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div></div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">func</span> wrap1&lt;T,U&gt;(f:<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span>&nbsp;<span style="color: rgb(4, 51, 255);" class="">future</span>-&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span>-&gt;(<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>-&gt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>)-&gt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span> {</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">return</span> {input <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">in</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; {cont <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">in</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">do</span>{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cont(<span style="color: rgb(4, 51, 255);" class="">perform</span>&nbsp;f(input))</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">catch</span> <span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">_</span>{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #0433ff" class="">func</span> wrap2&lt;T,U&gt;(f:<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T</span> -&gt; (<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>-&gt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>)-&gt;<span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">Void</span>) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">T&nbsp;</span><span style="color: rgb(4, 51, 255);" class="">future</span>-&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #3495af" class="">U</span>{</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(4, 51, 255);" class=""><span style="" class="">&nbsp; &nbsp; </span>return<span style="" class="">{</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;f(input)({</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);" class="">fulfil</span>&nbsp;$0</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; })</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class="">}</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=RC5Cq0zAxCHc1sM9Uy3-2BojrrUAw-2F96zH69NULNHPvCtVsFDCO71-2F0ittH9T7hp3GeZwqFM0E2IPHki12U-2FbC9eE-2BBi-2FWf6If6iQADM5-2FODkRvkGrTAl4k9sj5ZVXHKSBz7x-2FOye-2BQyYLPU7zxMPWsyHmCNfWpbgwWR7c4AlXeiLzKp-2FP5gGikMKlXe61XIcmxzxVGHjMtENVXp7EGaKEmbcVEe0-2F0XJYRHWCD5mDqqk-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;" class="">
</div>
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></body></html>