I think the behavior of NaN in comparisons is more confusing:<div><br></div><div><div>&gt;&gt;&gt; sorted([1,nan,2])</div><div>[1, nan, 2]</div><div>&gt;&gt;&gt; sorted([2,nan,1])</div><div>[2, nan, 1]</div><div><div>&gt;&gt;&gt; sorted([2,None,1])</div>
<div>Traceback (most recent call last):</div><div>&nbsp;&nbsp;File &quot;&lt;pyshell#28&gt;&quot;, line 1, in &lt;module&gt;</div><div>&nbsp;&nbsp; &nbsp;sorted([2,None,1])</div><div>TypeError: unorderable types: NoneType() &lt; int()</div></div>
<div><br></div>At least the third case is clear that I shouldn&#39;t have done that. The way nan works, the results of sorting where one of the values is nan is unpredictable and useless.</div><div><br></div><div>Yes, I know the rules about how NaN values behave in comparisons. Notwithstanding that, sorting could use a different comparison rule imposing a total ordering: -inf, ..., inf, nan as some other systems do.</div>
<div><br></div><div>--- Bruce</div><div><br></div><div><br><div class="gmail_quote">On Thu, Nov 13, 2008 at 10:55 AM, Tim Peters <span dir="ltr">&lt;<a href="mailto:tim.peters@gmail.com">tim.peters@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">[M.-A. Lemburg]<br>
&gt; ...<br>
<div class="Ih2E3d">&gt; So far, I haven&#39;t heard a single argument for why not having None<br>
&gt; participate in an ordering scheme is a good strategy to use, except<br>
&gt; that it&#39;s pure.<br>
<br>
</div>I&#39;ve tracked down plenty of program logic errors that would have been<br>
discovered more easily if comparing None to (mostly, but among others)<br>
integers and strings had raised an exception instead of returning a<br>
meaningless true/false result. &nbsp;Perhaps you haven&#39;t. &nbsp;For those who<br>
have, the attraction to making comparisons with None refuse to return<br>
nonsense silently is both obvious and visceral.<br>
<div class="Ih2E3d"><br>
<br>
&gt; IMHO, practicality beats purity in this special case.<br>
<br>
</div>If hiding program logic errors is practical, sure ;-)<br>
<br>
there-is-no-behavior-no-matter-how-bizarre-someone-won&#39;t<br>
come-to-rely-on-ly y&#39;rs &nbsp;- tim<br>
<div><div></div><div class="Wj3C7c">_______________________________________________<br>
Python-3000 mailing list<br>
<a href="mailto:Python-3000@python.org">Python-3000@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-3000" target="_blank">http://mail.python.org/mailman/listinfo/python-3000</a><br>
Unsubscribe: <a href="http://mail.python.org/mailman/options/python-3000/bruce%40leapyear.org" target="_blank">http://mail.python.org/mailman/options/python-3000/bruce%40leapyear.org</a><br>
</div></div></blockquote></div><br></div>