version tags

Duncan Coutts duncan.coutts at
Thu May 8 19:07:42 EDT 2008

On Thu, 2008-05-08 at 15:39 -0700, Isaac Potoczny-Jones wrote:
> Duncan Coutts wrote:
> (snip)
> > Does this seem like a good idea? What is/was the rationale for tags in
> > the first place?
> Yes, if I recall, Tags were not originally supposed to affect the 
> ordering of versions,

And actually they don't affect the ordering but they do affect equality.
Yes it's inconsistent.

If we look in the base library in Data.Version we find:

instance Eq Version where
  v1 == v2  =  versionBranch v1 == versionBranch v2 
                && sort (versionTags v1) == sort (versionTags v2)
                -- tags may be in any order

instance Ord Version where
  v1 `compare` v2 = versionBranch v1 `compare` versionBranch v2

This is clearly wrong. We would expect that:
     a == b
<=>  compare a b == EQ
but that does not hold here.

> but meant only for human consumption.  Whether 
> changing that now is a good idea or not, it's hard to say.  How many 
> packages in Hackage have any tags, for instance?

One. It was uploaded the other day which is why I just noticed that it's
a problem.


More information about the cabal-devel mailing list