hydrogen-version ================ [![Build Status](https://travis-ci.org/scravy/hydrogen-version.svg?branch=master)](https://travis-ci.org/scravy/hydrogen-version) A sane replacement for [`Data.Version`](http://hackage.haskell.org/package/base-4.7.0.2/docs/Data-Version.html) from the [`base`](http://hackage.haskell.org/package/base) package. *Note:* `Version` is also exported by [`Hydrogen.Prelude`](https://github.com/scravy/hydrogen-prelude), where it comes with some more instances (like [`Serialize`](https://hackage.haskell.org/package/cereal)). Data.Version vs Hydrogen.Version -------------------------------- ### Sane `Ord` instance `Data.Version` relies on `Ord` for lists, which will consider `1.0` to be less than `1.0.0`. `Hydrogen.Version` considers these to be equal. ### Sane `Read` and `Show` instances With `Hydrogen.Version` you can just do `read "1.0.0" :: Version`, whereas the `Read` and `Show` instances for `Data.Version` do not give a concise representation (`show dataVersion == "Version {versionBranch = [1,0], versionTags = []}"`). ### Stricter API In `Hydrogen.Version` you can create a `Version` only via `mkVersion`, whereas in `Data.Version` the constructor is exported, thus you could do such nonsense as `Data.Version.Version [] []` (which is not a proper version at all). ### No Tags `Hydrogen.Version` does not support tags. This is intentional, since there is no agreed upon definition for `Ord` in the presence of tags (consider `alpha` vs `beta` vs `snapshot` vs `ga` vs ...).