
wren ng thornton wrote:
[1] The Ord instance for Float and Double is also wrong, since NaN means there's no total ordering (and the existence of NaN is necessitated by the existence of Infinity). In addition to the fact that partial orderings are more common than total orderings, this means we should have a partial ordering class anyways.
Putting aside whether or not we should have a partial ordering class, you may be technically correct but practically quite wrong. To say that we ought not to be able to use <= on a Double or < on a Float is crazy. To say that I can't detect, with <= and the like, that 2.5 is between 2.0 and 5.0, just because I can't detect its relationship to NaN, strikes me as absurd. Let's not poison the well for 99% of uses because 1% of users have a leaky bucket. -- John