module Data.ExtraVersion where data Version = Version { vMajor :: Int , vMinor :: Int , vStatus :: VersionStatus , vIter :: Int } deriving (Eq, Ord, Show, Read) data VersionStatus = None | Alpha | Beta | ReleaseCandidate | Final deriving (Eq, Ord, Show, Enum, Read) versionToString :: Version -> String versionToString v = mj ++ "." ++ mn ++ "-" ++ st ++ it where mj = show $ vMajor v mn = show $ vMinor v st = case vStatus v of Alpha -> "alpha" Beta -> "beta" ReleaseCandidate -> "rc" Final -> "r" None -> "" it = show $ vIter v