If you can&#39;t stomach the weirdness of floating point then perhaps you should try to define your own type that obeys all the expected laws? :)<br><br><div class="gmail_quote">On Jan 11, 2008 3:36 AM, Wolfgang Jeltsch &lt;
<a href="mailto:g9ks157k@acme.softbase.org">g9ks157k@acme.softbase.org</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Am Freitag, 11. Januar 2008 11:03 schrieb Felipe Lessa:
<br><div class="Ih2E3d">&gt; Another thing for the record: Goldberg says<br>&gt;<br>&gt; &quot;The introduction of NaNs can be confusing, because a NaN is never<br>&gt; equal to any other number (including another NaN), so x = x is no
<br>&gt; longer always true. In fact, the expression x /= x is the simplest way<br>&gt; to test for a NaN if the IEEE recommended function Isnan is not<br>&gt; provided. Furthermore, NaNs are unordered with respect to all other
<br>&gt; numbers, so x &lt;= y cannot be defined as not x &gt; y. Since the<br>&gt; introduction of NaNs causes floating-point numbers to become partially<br>&gt; ordered, a compare function that returns one of &lt;, =, &gt;, or unordered
<br>&gt; can make it easier for the programmer to deal with comparisons.&quot;<br>&gt;<br>&gt; Goldberg, David. What Every Computer Scientist Should Know About<br>&gt; Floating-Point Arithmetic.<br>&gt; <a href="http://docs.sun.com/source/806-3568/ncg_goldberg.html" target="_blank">
http://docs.sun.com/source/806-3568/ncg_goldberg.html</a> .<br>&gt;<br>&gt; As GNU is not Unix, NaN is not a number, so what is standard about<br>&gt; numbers doesn&#39;t work for them. I don&#39;t think there&#39;s a compeling
<br>&gt; reason about changing this behavior, specially because it&#39;s what&#39;s<br>&gt; specified in the IEEE 754.<br><br></div>There is a really compelling reason: If the order on floating point numbers is<br>partial then there is no meaningful Ord instance for them.
<br><br>And what do Hugs and GHCi say? &nbsp;Their answers are plain horror:<br><br> &nbsp; &nbsp;Hugs, version 20050308:<br><br> &nbsp; &nbsp; &nbsp; &nbsp;compare (0 / 0) (0 / 0) =&gt; EQ<br><br> &nbsp; &nbsp; &nbsp; &nbsp;0 / 0 == 0 / 0 =&gt; False<br><br> &nbsp; &nbsp;GHCi 6.8.2:<br>
<br> &nbsp; &nbsp; &nbsp; &nbsp;compare (0 / 0) (0 / 0) =&gt; GT<br><br> &nbsp; &nbsp; &nbsp; &nbsp;0 / 0 &gt; 0 / 0 =&gt; False<br><br>Anyone interested in filing bug reports?<br><br>&gt; []<br><br>Best wishes,<br><font color="#888888">Wolfgang<br></font><div>
<div></div><div class="Wj3C7c">_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">
http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br></div></div></blockquote></div><br>