aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/math/number/i16.lux
blob: 0f273497c59295ae6bd771c2cf1f2f3bce609cd4 (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
(.module:
  [library
   [lux (#- i64)
    [abstract
     [equivalence (#+ Equivalence)]]
    [data
     ["." maybe]]
    [type (#+ :by_example)]]]
  [//
   ["." i64 (#+ Sub)]])

(def: sub
  (maybe.assume (i64.sub 16)))

(def: .public I16
  {#.doc (doc "A 16-bit integer.")}
  (:by_example [size]
               (Sub size)
               ..sub
               
               (I64 size)))

(def: .public equivalence (Equivalence I16) (\ ..sub &equivalence))
(def: .public width Nat (\ ..sub width))
(def: .public i16 (-> I64 I16) (\ ..sub narrow))
(def: .public i64 (-> I16 I64) (\ ..sub widen))