h&! 6      !"#$%&'()*+,-./012345 Safe-Inferred 8:;<='package-versionErrors that can occur when reading PVP version numbers from a file.package-versionError for missing file.package-versionError for missing version.package-versionRead/Validation error.package-version7Errors that can occur when reading PVP version numbers.package-versionError when reading a string.package-versionValidation error.package-version:Errors that can occur when validating PVP version numbers.package-version(PVP version numbers must be at least A.B package-version'PVP version numbers cannot be negative. package-version  represents  https://pvp.haskell.org/PVP$ version numbers. It is similar to  Data.Version's  (i.e. wraps a [6] ) except:   has no .We enforce PVP's "tags must be at least A.B" invariant via the smart-constructor pattern.Trailing zeroes are ignored in 7, 8, 9, and :.That is, we declare an equivalence class up to trailing zeroes. In particular, the : identity is [0] = { [0,0], [0,0,0], ... } and its 9/ instance takes the greatest version (based on 8).Note: Because we export the underlying list in various ways, (e.g. ;), 7's extensionality law, x == y ==> f x == f y can be broken. Take care that you do not rely on this law if you are using its underlying [6] (or <) representation.Examples>UnsafePackageVersion [0,0,0,0] == UnsafePackageVersion [0,0,0]True=UnsafePackageVersion [4,0,0] > UnsafePackageVersion [1,2,0,0]True UnsafePackageVersion [9,0,0]1UnsafePackageVersion {unPackageVersion = [9,0,0]} UnsafePackageVersion [0,9,0,0]/UnsafePackageVersion {unPackageVersion = [0,9]}TR.readEither @PackageVersion "UnsafePackageVersion {unPackageVersion = [3,2,1]}"9Right (UnsafePackageVersion {unPackageVersion = [3,2,1]})TR.readEither @PackageVersion "UnsafePackageVersion {unPackageVersion = [3]}"Left "Prelude.read: no parse" package-version package-versionpackage-versionSmart constructor for  . The length of the list must be > 1 to match PVP's minimal A.B. Furthermore, all digits must be non-negative.ExamplesmkPackageVersion [1,2]7Right (UnsafePackageVersion {unPackageVersion = [1,2]})mkPackageVersion [2,87,7,1].Note: Because   does not have a ?, *) is not injective even on "well-formed" >0s (i.e. non-negative and length > 1). That is, - . * is not an isomorphism.Examples(fromVersion (Version [2,13,0] ["alpha"]):Right (UnsafePackageVersion {unPackageVersion = [2,13,0]})fromVersion (Version [] [])Left (VTooShortErr [])+package-versionAttempts to read a < into a  . Leading and/or trailing dots will result in an error, as will the empty string.ExamplesfromString "1.4.27.3" with empty ? from  .Examples(toVersion (UnsafePackageVersion [3,2,0])3Version {versionBranch = [3,2,0], versionTags = []}.package-version Displays   in < format.Examples*toString (UnsafePackageVersion [2,7,10,0]) "2.7.10.0"/package-versionTemplateHaskell for reading the cabal file's version at compile-time. Errors encountered will be returned as compilation errors.Examples,$$(packageVersionTH "package-version.cabal")3UnsafePackageVersion {unPackageVersion = [0,1,0,0]}0package-version Version of / that returns a < representation of   at compile-time. Returns  "UNKNOWN" if any errors are encountered.Examples2$$(packageVersionStringTH "package-version.cabal") "0.1.0.0",$$(packageVersionStringTH "not-found.cabal") "UNKNOWN"1package-version Version of / that returns a = representation of   at compile-time. Returns  "UNKNOWN" if any errors are encountered.Examples0$$(packageVersionTextTH "package-version.cabal") "0.1.0.0"*$$(packageVersionTextTH "not-found.cabal") "UNKNOWN"2package-version Version of 5 that throws an  if any errors are encountered.Examples-packageVersionThrowIO "package-version.cabal"3UnsafePackageVersion {unPackageVersion = [0,1,0,0]}3package-version Version of 5 that returns a < representation of   at runtime. Returns  "UNKNOWN" if any errors are encountered.Examples.packageVersionStringIO "package-version.cabal" "0.1.0.0"(packageVersionStringIO "not-found.cabal" "UNKNOWN"4package-version Version of 5 that returns a = representation of   at runtime. Returns  "UNKNOWN" if any errors are encountered.Examples,packageVersionTextIO "package-version.cabal" "0.1.0.0"&packageVersionTextIO "not-found.cabal" "UNKNOWN"5package-versionReads the cabal-file's version.Examples.packageVersionEitherIO "package-version.cabal";Right (UnsafePackageVersion {unPackageVersion = [0,1,0,0]}) ()*+,-./012345 ()*+, -./012345       !"#$%&'()*+,-./0123456789:;<=>?@A?BC?BDEFGEFHEIJEFKLMNEEpackage-version-0.1.0.0-inplaceData.Version.Package.InternalData.Version.PackageDataVersion Data.Version versionTagsControl.Exception.Safe Exception ReadFileErrorRfFileNotFoundErrRfVersionNotFoundErrRfReadValidateErrReadStringError RsReadStrErr RsValidateErrValidationError VTooShortErr VNegativeErrPackageVersionUnsafePackageVersionunPackageVersionMkPackageVersionmkPackageVersiontoText$fPrettyPackageVersion$fNFDataPackageVersion$fReadPackageVersion$fMonoidPackageVersion$fSemigroupPackageVersion$fOrdPackageVersion$fEqPackageVersion$fPrettyValidationError$fPrettyReadStringError$fPrettyReadFileError$fEqReadFileError$fGenericReadFileError$fShowReadFileError$fExceptionReadFileError$fEqReadStringError$fGenericReadStringError$fShowReadStringError$fExceptionReadStringError$fEqValidationError$fGenericValidationError$fShowValidationError$fExceptionValidationError$fLiftLiftedRepPackageVersion$fShowPackageVersionmkPackageVersionTHunsafePackageVersion fromVersion fromStringfromText toVersiontoStringpackageVersionTHpackageVersionStringTHpackageVersionTextTHpackageVersionThrowIOpackageVersionStringIOpackageVersionTextIOpackageVersionEitherIOghc-prim GHC.TypesInt GHC.ClassesEqOrdbaseGHC.Base SemigroupMonoidGHC.ShowshowString text-1.2.4.1Data.Text.InternalText