<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 17, 2017 at 12:46 PM, David Sweeris <span dir="ltr">&lt;<a href="mailto:davesweeris@mac.com" target="_blank">davesweeris@mac.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><blockquote type="cite">On Feb 17, 2017, at 10:38 AM, Abe Schneider via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br><br>If I read Nicolas&#39;s post correctly, I think he&#39;s more arguing for the<br>ability to create syntax that allows Swift to behave in a similar way<br>to Numpy/Matlab. While Swift already does allow you to define your own<br>operators, the main complaint is that he can&#39;t define the specific<br>operators he would like.</blockquote><br></span><div>In Xcode 8.2.1, with the 8.2.1 toolchain, this works (well, it compiles… obviously it doesn’t check for mis-matched array lengths):</div><div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(187,44,162)"><span style="font-variant-ligatures:no-common-ligatures">infix</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000"> </span><span style="font-variant-ligatures:no-common-ligatures">operator</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000"> .+</span></div><div style="margin:0px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures;color:#bb2ca2">func</span><span style="font-variant-ligatures:no-common-ligatures"> .+ &lt;T: </span><span style="font-variant-ligatures:no-common-ligatures;color:#703daa">Integer</span><span style="font-variant-ligatures:no-common-ligatures">&gt; (lhs: [</span><span style="font-variant-ligatures:no-common-ligatures;color:#4f8187">T</span><span style="font-variant-ligatures:no-common-ligatures">], rhs: [</span><span style="font-variant-ligatures:no-common-ligatures;color:#4f8187">T</span><span style="font-variant-ligatures:no-common-ligatures">]) -&gt; [</span><span style="font-variant-ligatures:no-common-ligatures;color:#4f8187">T</span><span style="font-variant-ligatures:no-common-ligatures">] {</span></div></div></div></blockquote><div><br></div><div>precondition(lhs.count == rhs.count)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div style="margin:0px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#bb2ca2">return</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:#3d1d81">zip</span><span style="font-variant-ligatures:no-common-ligatures">(lhs, rhs).</span><span style="font-variant-ligatures:no-common-ligatures;color:#3d1d81">map</span><span style="font-variant-ligatures:no-common-ligatures"> { $0.</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">0</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:#3d1d81">+</span><span style="font-variant-ligatures:no-common-ligatures"> $0.</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">1</span><span style="font-variant-ligatures:no-common-ligatures"> }</span></div><div style="margin:0px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">}</span></div></div><div><span style="font-variant-ligatures:no-common-ligatures"><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(0,132,0)"><span style="font-variant-ligatures:no-common-ligatures;color:#3d1d81">print</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">([</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">1</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">,</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">2</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">,</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">3</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">]</span><span style="font-variant-ligatures:no-common-ligatures;color:#31595d">.+</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">[</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">4</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">,</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">5</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">,</span><span style="font-variant-ligatures:no-common-ligatures;color:#272ad8">6</span><span style="font-variant-ligatures:no-common-ligatures;color:#000000">]) </span><span style="font-variant-ligatures:no-common-ligatures">//outputs [5, 7, 9]</span></div></span></div></div></blockquote><div><br></div><div>There&#39;s nothing, afaik, which stands in the way of that syntax today. The proposal is to extend the standard library to add syntax for a math library. The idea of having a core math library has already been mentioned on this list, to great approval, but it should come in the form of an actual library, and not a syntax only!</div><div><br></div></div></div></div>