(.module: [lux #* [abstract [equivalence (#+ Equivalence)]] [data ["." product] ["." text ["%" format]] [collection ["." list ("#\." functor)]]] [math [number ["." nat]]] [time ["." instant]]] [// (#+ Version) ["." time_stamp (#+ Time_Stamp)]]) (type: #export Build Nat) (type: #export Value {#version Version #time_stamp Time_Stamp #build Build}) (def: #export equivalence (Equivalence Value) ($_ product.equivalence text.equivalence instant.equivalence nat.equivalence )) (def: separator "-") (def: snapshot "SNAPSHOT") (def: #export (format (^slots [#version #time_stamp #build])) (%.Format Value) (%.format (text.replace_all ..snapshot (time_stamp.format time_stamp) version) ..separator (%.nat build)))