<div dir="ltr">In answer to Jonathan:<div>I can define it myself - and did, in the original post. I don&#39;t know how common a use-case it is, but it&#39;s a small annoyance with switch statements to write &#39;default: break // this is impossible&#39;. This is a specific scenario where case pattern-matching pattern seemed inadequate, so I pitch it here for more discussion, my thinking being that: perhaps if it&#39;s in Core, it can be implemented more efficiently than I&#39;ve done here. Perhaps there are better choices of characters for the specific operator. Perhaps there&#39;s a reason why converting this comparison into an NSComparisonResult isn&#39;t already there. I only find out if I ask!</div><div><br></div><div>In answer to Dave:</div><div>That&#39;s interesting to hear (and possibly saved everyone the bother of a review!). I wasn&#39;t aware it was already a named operator (and in use in other languages, now I&#39;ve looked it up). I hope it makes it into the schedule, as I&#39;m not sure I know enough to take on that hint!</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 5, 2016 at 12:10 AM, Dave Abrahams via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
on Thu Feb 04 2016, Jonathan Tang &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
<br>
&gt; Can&#39;t you define this yourself?  This worked in a Playground using Swift<br>
&gt; 2.1:<br>
&gt;<br>
&gt; enum Ordering {<br>
&gt;     case OrderedSame, OrderedAscending, OrderedDescending<br>
&gt; }<br>
&gt;<br>
&gt; infix operator &lt;=&gt; {}<br>
&gt; func &lt;=&gt; &lt;T: Comparable&gt;(x: T, y: T) -&gt; Ordering {<br>
&gt;     if x &lt; y {<br>
&gt;         return .OrderedAscending<br>
&gt;     } else if x &gt; y {<br>
&gt;         return .OrderedDescending<br>
&gt;     } else {<br>
&gt;         return .OrderedSame<br>
&gt;     }<br>
&gt; }<br>
&gt;<br>
&gt; let x = 3<br>
&gt; let y = 4<br>
&gt; switch x &lt;=&gt; y {<br>
&gt; case .OrderedSame:<br>
&gt;     print(3)<br>
&gt; case .OrderedAscending:<br>
&gt;     print(4)  // Executed<br>
&gt; case .OrderedDescending:<br>
&gt;     print(5)<br>
&gt; }<br>
<br>
</span>The problem is that the stdlib algorithms don&#39;t use this, so sorting,<br>
e.g., an array of arrays of strings ends up being more expensive than<br>
necessary.  What you really want is for the &quot;spaceship operator&quot; to be<br>
the primary implementation hook that gets called from the comparison<br>
predicates.<br>
<br>
It&#39;s on the agenda for swift 3 to add the spaceship operator, and make<br>
the algorithms use it, and solve the migration problems for old code,<br>
and solve the interop problems with foundation.  However, we have a lot<br>
of other work on our hands, and there&#39;s always a chance we won&#39;t fit it<br>
in the schedule.  This could make a great after-starter project for<br>
someone out there who wanted to take it on (hint, hint).<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
-Dave<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</div></div></blockquote></div><br></div>