
On Saturday 14 May 2011 15:14:31, Ketil Malde wrote:
Daniel Fischer
writes: Not having Eq and Ord instances for Double and Float would be extremely inconvenient (too inconvenient to seriously consider, I think), so one can a) do what's done now b) make NaNs an error c) come up with a brilliant solution.
Maybe not terribly brilliant, but wouldn't it improve things slightly if NaN was considered less or greater than any other value (possibly excluding infinities)?
On the one hand yes, although it would be arbitrary and still produce undesirable results. On the other hand, the behaviour of (==), (<) etc. with NaNs that we have is what is specified in the Java Language Specification (section 4.2.3) and in the C99 standard (fn. 206, ยง17.12.14.2 and Appendix F.8.3), if I read that footnote correctly, that behaviour is required by IEC 60559 (by which comparisons involving a NaN must raise an 'invalid' exception). I expect that other languages specify the same behaviour, I think it's what the hardware does. So, is it worth changing? I'm not sure, but I tend towards thinking it's not, we'd need a better solution to make it worth the deviation.