proposal: in base, for Data.Version, change the meaning of comparisons

Malcolm Wallace Malcolm.Wallace at cs.york.ac.uk
Fri Oct 26 06:46:34 EDT 2007


> > Proposal: that values of the type Data.Version.Version should
> > compare equal, by ignoring trailing zeros.
> > Thus 1.2.0 == 1.2, rather than 1.2.0 > 1.2

Simon Marlow <simonmarhaskell at gmail.com> wrote:

> I see advantages and disadvantages.
> Advantages:
>   * matches intuitive understanding of versions
>   * lets us drop trailing zeroes in version numbers
> Disadvantages:
>   * version ordering is slightly harder to explain

Pretty much, yes.  Although arguably the disadvantage is not so bad,
since currently one has to explain why 1.2.0 is _not_ the same as 1.2.

> Is there a precedent anywhere else for doing this?

I could point to ordinary decimal notation, where 1.2000 == 1.2.
    http://en.wikipedia.org/wiki/Trailing_zero

Perl has a related notion of implicit zero-extension in the "version" pod:
    http://search.cpan.org/~jpeacock/version-0.74/lib/version.pod

Microsoft's .NET Framework seems to ignore trailing zeros in versions:
    http://www.cyscape.com/products/bhawk/docs/BrowserHawk/CompareVersions_Method_NET_.htm
    http://msdn2.microsoft.com/en-us/library/d5cd9b2c.aspx

wxWidgets release numbers sometimes omit trailing zeros:
    http://www.wxwidgets.org/manuals/stable/wx_backwardcompatibility.html

I found proposals to ignore trailing zeros in version comparisons
within OpenOffice, Python distutils, and Drupal:
    http://extensions.openoffice.org/servlets/ReadMsg?list=dev&msgNo=212
    http://mail.python.org/pipermail/distutils-sig/2007-September/008324.html
    http://vbdrupal.org/forum/showthread.php?p=591

> Wouldn't the implementation be simpler if you added a
> dropTrailingZeros  function, and just applied it before comparing? 

Yes, that is another possible implementation.  It involves traversing
both version structures twice rather than once (but I don't suppose the
slight efficiency loss would ever be noticable).

Regards,
    Malcolm


More information about the Libraries mailing list