Ivan Lazar Miljenovic schrieb:
On 3 September 2010 04:57, Arie Peterson <ar...@xs4all.nl> wrote:
On Thu, 2 Sep 2010 19:30:17 +0200, Daniel Fischer
<daniel.is.fisc...@web.de> wrote:
Why would one consider using Ord for Map an abuse?
A kludge, for performance reasons, but an abuse?
Because it forces one to declare Ord instances for types which have no
natural ordering. It is useful to *not* have such instances, in order to
catch programming errors.

What precisely do you mean by natural ordering?

E.g. I wanted to have a Set of Gaussian (complex) integers, but I did
not want to define an Ord instance for them, because writing
  a < (b :: Gaussian)
is a bug with high probability.

A separate type class for types which can be ordered in some (possibly
arbitrary) way, for use in Data.Map, would remedy this.

Sure... except that the way Data.Map and Data.Set are implemented is
by a binary tree, and you typically want some kind of ordering for
those.

How is a type class that represents arbitrary ordering any different
from what we already have?  The notation might not be the best if you
consider the ordering to be arbitrary, but what else would you use?
"isArbitrarilyBefore :: (ArbitraryOrdering a) => a -> a -> Bool" ?

Yes, something this way. (<) suggests a notion of magnitude for me,
which some orderings do not have.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to