[Haskell-cafe] Unnecessarily strict implementations

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Thu Sep 2 22:02:22 EDT 2010


On 3 September 2010 04:57, Arie Peterson <ariep at xs4all.nl> wrote:
> On Thu, 2 Sep 2010 19:30:17 +0200, Daniel Fischer
> <daniel.is.fischer at 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?

> 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 at gmail.com
IvanMiljenovic.wordpress.com


More information about the Haskell-Cafe mailing list