aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/meta/compiler/meta/archive/unit.lux
blob: 4910524dbb244a01860de0e3c682df868da6bd72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
... This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
... If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

(.require
 [library
  [lux (.except #module)
   [abstract
    [equivalence (.only Equivalence)]
    [hash (.only Hash)]]
   [data
    ["[0]" product]
    [text
     ["%" \\format]]
    [collection
     ["[0]" set (.only Set)]]]
   [math
    [number
     ["[0]" nat]]]]]
 [//
  ["[0]" module]
  ["[0]" artifact]])

(type .public ID
  (Record
   [#module module.ID
    #artifact artifact.ID]))

(def .public hash
  (Hash ID)
  (all product.hash
       nat.hash
       nat.hash
       ))

(def .public equivalence
  (Equivalence ID)
  (of ..hash equivalence))

(def .public none
  (Set ID)
  (set.empty ..hash))

(def .public (format it)
  (%.Format ID)
  (%.format (%.nat (the #module it))
            "."
            (%.nat (the #artifact it))))