Re: [GHC] #2496: Invalid Eq/Ord instances in Data.Version

#2496: Invalid Eq/Ord instances in Data.Version -------------------------------------+------------------------------------- Reporter: guest | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Core Libraries | Version: 6.8.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: Phab:D395 -------------------------------------+------------------------------------- Comment (by ekmett): One reason for not following semver exactly is that the PVP doesn't line up exactly with semver. Both of our first two digits are "major", and we allow as many subsequent digits as we want. We also don't have an observable prerelease tag for better or worse. As for version tags being ignored by the `Eq` instance. That would have been a viable alternative, but it would have meant that `Version` still didn't line up with what we use it for in ghc, cabal, and elsewhere. IIRC the main use of the tags currently is to talk about a version "*" in some internals in places. A "structural" `Eq` has the benefit that `x == y` implies `f x == f y`, and doesn't require the user to track the exception to the semantics they expect for equality, whereas under your suggestion we'd lose that. It'd just be 'some place to shove extra stuff' bolted onto a data type that could be fundamentally simpler. Then if users want to work with a tagged version they can build it by one of several means, for whatever notions of tags they want to allow, using the existing `Version` type as a primitive component in their own tagged version type with tags being relevant or not for equality as they choose. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/2496#comment:22 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC