packages feed

hydrogen-version-1.4: README.md

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 ...).