Proposal: Bounded instance for IntSet (ticket #1953)

Ross Paterson ross at soi.city.ac.uk
Mon Dec 3 20:34:15 EST 2007


On Mon, Dec 03, 2007 at 03:32:52PM +0200, Yitzchak Gale wrote:
> Henning Thielemann wrote:
> > ...it is not sensible to have different instances for the same
> > type and class, because they will collide sooner or later.
>
> True. That is why libraries should not define an instance
> at all, unless they are quite certain that it is by far the most
> important instance that anyone will ever want to use.

I would draw the opposite conclusion from the same data: if a sensible
instance can be identified, it should accompany either the class or
the type constructor.  If people define orphan instances, they will
eventually collide, even they are identical.  (There are a few orphans in
Control.Monad.Instances, but that is required to preserve compatibility
with Haskell 98.)

But in the case at issue, the proposed Bounded instance is
counter-intuitive because the underlying Ord instance is.  That Ord
instance is an arbitrary choice that is accepted because it allows IntSets
to be used as search keys; it makes no sense on its own.  A Bounded
instance would attach unwarranted significance to this arbitrary ordering.

It might be different if there were a use in sight for the Bounded
instance.


More information about the Libraries mailing list