<p dir="ltr">While this is a bit off-topic, I'd like to add my 5 cents that often adding instances for common type-classes might be "bad" even when it's totally defined for all values, one example is a Monoid instance for HashMap.</p>
<p dir="ltr">So, I'd say that if you might be in doubt -- it's better to not add instance at all, since your users have no ability to remove it from their projects (or redefine).</p>
<div class="gmail_quote">26 квіт. 2015 04:10 "wren romano" <<a href="mailto:winterkoninkje@gmail.com">winterkoninkje@gmail.com</a>> пише:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, Apr 24, 2015 at 9:06 AM, Ivan Lazar Miljenovic<br>
<<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@gmail.com</a>> wrote:<br>
> What is the validity of defining an Ord instance for types for which<br>
> mathematically the `compare` function is partially ordered?<br>
<br>
Defining Ord instances for types which are not totally ordered is *wrong*.<br>
<br>
For example, due to the existence of NaN values, Double/Float are not<br>
totally ordered and therefore their Ord instances are buggy. In my<br>
logfloat package I have to explicitly add checks to work around the<br>
issues introduced by the buggy Ord Double instance. This is why I<br>
introduced the PartialOrd class, and I'm not the first one to create<br>
such a class. We really ought to have an official PartialOrd class as<br>
part of base/Prelude. The only question is whether to use Maybe<br>
Ordering or a specially defined PartialOrdering type (the latter<br>
optimizing for space and pointer indirection; the former optimizing<br>
for reducing code duplication for manipulating the<br>
Ordering/PartialOrdering types).<br>
<br>
--<br>
Live well,<br>
~wren<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>