(.module: [library [lux {"-" [Type]} [abstract [equivalence {"+" [Equivalence]}] [order {"+" [Order]}] [hash {"+" [Hash]}]] [data ["." product] ["." text ("#\." order) ["%" format {"+" [format]}]]]]] ["." // "_" ["#" artifact {"+" [Artifact]} ("#\." order) [type {"+" [Type]}]]]) (type: .public Dependency (Record [#artifact Artifact #type Type])) (def: .public hash (Hash Dependency) ($_ product.hash //.hash text.hash )) (def: .public equivalence (Equivalence Dependency) (\ hash &equivalence)) (implementation: .public order (Order Dependency) (def: &equivalence ..equivalence) (def: (< reference subject) (<| (or (//\< (value@ #artifact reference) (value@ #artifact subject))) (and (//\= (value@ #artifact reference) (value@ #artifact subject))) (text\< (value@ #type reference) (value@ #type subject)))))