
On 3 September 2010 04:57, Arie Peterson
On Thu, 2 Sep 2010 19:30:17 +0200, Daniel Fischer
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?
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" ? -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com