<div dir="auto"><div dir="auto"></div>I would argue there is no "sensible" implementation of Eq and Ord for floating point. Better to have PartialEq [1] /PartialOrd [2].<div dir="auto"><br></div><div dir="auto">[1]: <a href="https://doc.rust-lang.org/std/cmp/trait.PartialEq.html">https://doc.rust-lang.org/std/cmp/trait.PartialEq.html</a></div><div dir="auto"><br></div><div dir="auto">[2]: <a href="https://doc.rust-lang.org/std/cmp/trait.PartialOrd.html">https://doc.rust-lang.org/std/cmp/trait.PartialOrd.html</a><br><div dir="auto"><br><div dir="auto"><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Sat, Nov 30, 2019, 11:21 AM Zemyla <<a href="mailto:zemyla@gmail.com" target="_blank" rel="noreferrer">zemyla@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">There should be a newtype wrapper that wraps a RealFloat, keeps the Enum/Num/Fractional/so on instances, but gives it sensible ones for Eq and Ord, with the following order:</p>
<p dir="ltr">NaN < -Inf < negative < -0 < +0 < positive < +Inf</p>
<p dir="ltr">It may not belong in base, but if nothing else it definitely belongs in containers, because Set and Map depend critically on sensible instances of Ord.</p>
<p dir="ltr">(Also, it should newtype derive Read and Show, so that people using them with GHCi see "fromList [(NaN, yadda), (-1.5, yadda), (2.7, blah), (+Inf, blah)]" instead of "fromList [(FloatOrd { unwrapFloat :: NaN }, yadda), ...".)</p>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div></div></div></div>