On 9 Apr 2008, at 17:49, Henning Thielemann wrote:
Additionally I see the problem, that we put more interpretation
into standard symbols by convention. Programming is not only about
the most general formulation of an algorithm but also about error
detection. E.g. you cannot compare complex numbers in a natural
way, that is
x < (y :: Complex Rational)
is probably a programming error. However, some people might be
happy if (<) is defined by lexicgraphic ordering. This way complex
numbers can be used as keys in a Data.Map. But then accidental uses
of (<) could no longer be detected. (Thus I voted for a different
class for keys to be used in Data.Map, Data.Set et.al.)
If one just needs to compare equal and unequal elements, then a hash-
map is faster than a balanced tree map, and a total order is not
needed. So those that want to use complex numbers as keys perhaps
have not considered that possibility.
And if one considers a total order (<) for all data types, then if
that includes functions, then it may happen that two equal functions
f, g satisfy f < g. So it would not have the expected semantic
properties.
Hans
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe