Hydrogen Version Type.
A sane replacement for Data.Version
from the base
package.
Hydrogen.Version
is also exported by Hydrogen.Prelude
where it comes with a few more instances (e.g. for Data.Serialize
).
>>>
Differences to Data.Version
Sane Ord instance
Data.Version
relies onOrd
for lists, which will consider1.0
to be less than1.0.0
.Hydrogen.Version
considers these to be equal.Sane Read and Show instances
With
Hydrogen.Version
you can just doread "1.0.0" :: Version
, whereas theRead
andShow
instances forData.Version
do not give a concise representation:
show hydrogenVersion == "1.0.0"
show dataVersion == "Version versionBranch = [1,0,0], versionTags = []"
Stricter API
In
Hydrogen.Version
you can create aVersion
only viamkVersion
, whereas inData.Version
the constructor is exported, thus you could so such nonsense asData.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 forOrd
in the presence of tags (consideralpha
vsbeta
vssnapshot
vsga
vs ...).
hydrogen-version
A sane replacement for Data.Version
from the base
package.
Note:Version
is also exported by Hydrogen.Prelude
, where it comes with some more instances (like Serialize
).
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 ...).