(.require [library [lux (.except) [data [text ["%" \\format]]] [math [number ["n" nat]]]]]) (type .public Version Nat) (def range 100) (def level (n.% ..range)) (def next (n./ ..range)) (def .public patch (-> Version Nat) (|>> ..level)) (def .public minor (-> Version Nat) (|>> ..next ..level)) (def .public major (-> Version Nat) (|>> ..next ..next ..level)) (def separator ".") (def (padded value) (-> Nat Text) (if (n.< 10 value) (%.format "0" (%.nat value)) (%.nat value))) (def .public (format version) (%.Format Version) (%.format (%.nat (..major version)) ..separator (..padded (..minor version)) ..separator (..padded (..patch version))))