HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulesemver-0.4.0.1Haskell2010

Data.SemVer.Delimited

A set of delimiters can be used to encode/decode a Version and specify alternative serialisation strategies.

Lenses can be used to modify the default delimiter set, as in the following example - using alpha characters to encode the version as a valid DNS CNAME (assuming operators from lens or lens-family-core):

let Right v = fromText "1.2.3+40"
let alpha = semantic & major .~ 'm' & patch .~ 'p' & release .~ 'r' & metadata .~ 'd' & identifier .~ 'i'

Data.Text.Lazy.Builder.toLazyText ("app01-" <> toBuilder alpha v <> ".dmz.internal")

Would result in the following LText.Text:

app01-1m2p3d40.dmz.internal

Using the same Delimiters set with parser would ensure correct decoding behaviour.

  • 1 type
  • 8 values
  • Packagesemver-0.4.0.1
  • Exports9
  • LanguageHaskell2010
  • LicenceMPL-2.0
  • SourceDelimited.hs

Delimiters

1 declaration
datadata Delimiters
#

An opaque set representing the seperators used to delimit semantic version components.

Instances4Eq, Ord, Show, NFData

Constructor

valuesemantic :: Delimiters
#

The default set of delimiters used in the semantic version specification.

Example: Given exhaustive version components would result in the following hypothetical version:

1.2.3-alpha.1+sha.exp.12ab3d9

Lenses

Encoding

Decoding