[Haskell-cafe] instance Monad m => Functor m
Hans Aberg
haberg at math.su.se
Thu Apr 10 13:28:02 EDT 2008
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
More information about the Haskell-Cafe
mailing list