On Thu, 24 Jan 2008 13:34:56 +0000, Antoon Pardon wrote: > On 2008-01-21, Steven D'Aprano <[EMAIL PROTECTED]> > wrote: >> On Sun, 20 Jan 2008 21:15:02 -0600, Albert Hopkins wrote: >> >> According to the IEEE-754 standard the usual trichotomy of "x is less >> than y, x is equal to y, or x is greater than y" has to be extended to >> include "x and y are unordered". Comparisons with NaNs are unordered, >> and so expressions like "x < nan" should signal an exception. > > That doesn't follow. The problem is not that x < nan returns False > because that is correct since x isn't smaller than nan.
Comparisons between things which are not comparable risk being terribly misleading, and depend very much on how you define "less than" and "greater than". If you insist that everything must have a boolean yes/no answer ("Does the colour red have a better chance of becoming President than a kick to the head?") then False is not an entirely unreasonable result to return. But if you consider that having "x is not smaller than y" be equivalent to "x is greater than or equal to y" is more important than forcing a boolean answer in the first place, then you need something to signal Undefined, and an exception is the right solution unless you have multi- valued logic system (True, False, Maybe, Undefined, ...) SANE (Standard Apple Numerics Environment) explicitly states that it signals an exception when doing ordered comparisons against NaNs because to return False would be misleading. Apple went on to use the same rule in their PowerPC Numerics. That's straight out of the Zen: Practicality Beats Purity. -- Steven -- http://mail.python.org/mailman/listinfo/python-list