[Haskell-cafe] RE: [Haskell] Re: Trying to install binary-0.4

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Tue Oct 16 10:01:56 EDT 2007

On Oct 16, 2007, at 9:01 , Bayley, Alistair wrote:

>> From: Simon Marlow [mailto:simonmarhaskell at gmail.com]
>> The lexicographical ordering would make 10.0 > 9.3.  In
>> general, A.B > C.D
>> iff A > C or A == C && B > D.  When we say the "latest"
>> version we mean
>> "greatest", implying that version numbers increase with time.
>>  Does that help?
> Sort of. It's what I'd expect from a sensible version comparison. It's
> just not something I'd ever choose to call lexicographic ordering.  
> IMO,
> lexicographgic ordering is a basic string comparision so e.g.
> max "10.0" "9.3" = "9.3"
> I'd call what you're doing numeric ordering. Does it have a better  
> name,
> like version-number-ordering, or section-number-ordering (e.g. Section
> 3.2.5, Section 3.2.6)?

"Lexicographic ordering", to me, means ordering by the collation  
sequence for individual characters.  I'd call this multi-field  
numeric ordering with "." as the field separator.

"Version number ordering" is a bit trickier:  it's used by Linux/*BSD  
package systems that need to deal with versions like  
"1.2a3_4,1" (which in FreeBSD means package version 1.2a3 (which is  
defined by the package originator and usually means the alpha-3  
release of version 1.2), FreeBSD package version 4 thereof, with an  
epoch of 1 to force higher sorting because at some point a new  
version was retracted (say, 1.2a4 was packaged, then turned out to  
have major bugs that caused a rollback to 1.2a3, so the epoch is  
bumped to indicate that this 1.2a3 is actually later than the  
1.2a4).  RPM and APT have similar mechanisms, although syntactically  

(I don't *think* we need to care about this.  Unfortunately, while  
Cabal version numbers are fairly clearly only the upstream part of  
it, and defined such that we don't need to determine whether 1.2a4  
sorts before or after 1.2 (a rat's nest pretty much every OS  
distribution packaging system needs to fight with), I can imagine  
Hackage needing something like an epoch to handle regressions while  
allowing cabal-install to do the right thing.)

brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH

More information about the Haskell-Cafe mailing list