<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jul 11, 2016 at 5:29 PM, Mark Lacey <span dir="ltr">&lt;<a href="mailto:mark.lacey@apple.com" target="_blank">mark.lacey@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><br><div><span class=""><blockquote type="cite"><div>On Jul 11, 2016, at 4:56 PM, Jacob Bandes-Storch &lt;<a href="mailto:jtbandes@gmail.com" target="_blank">jtbandes@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">Personally I think we should just remove these optional-taking variants of the comparison operators. Does anyone agree/disagree?</div></div></blockquote><div><br></div></span>I believe that a well-defined ordering of optionals and non-optionals is required in order to allow sorting an array of optionals.</div><div><br></div><div>You can argue about how useful this is, but it seems like it would be important to support this for generic algorithms.</div></div></blockquote><div><br></div><div>I&#39;d be curious whether anyone can come up with a good example of why this would be useful.¬†Optional itself isn&#39;t Comparable (the generics features required for that don&#39;t exist yet), so I don&#39;t think there&#39;s any way to use this in generic code without explicitly handling the values as being Optional, and so you might as well be required to unwrap them.</div><div>¬†¬†</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="word-wrap:break-word"><div>Having said that, it also seems entirely reasonable (and safer) to disallow comparison of an optional with a non-optional value when done explicitly in code (e.g. x &lt; y where one is a known optional), and require an explicit cast of the other operand to an optional in order to allow this to compile.<br></div></div></blockquote><div><br></div><div>Just to re-iterate my above paragraph (trying to convince myself), I think that today the operands are <b>always</b> &quot;known optional&quot; or &quot;known non-optional&quot;, so there isn&#39;t really a way to distinguish between these cases.</div></div></div></div>