aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/math/number/i32.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/library/lux/math/number/i32.lux24
1 files changed, 24 insertions, 0 deletions
diff --git a/stdlib/source/library/lux/math/number/i32.lux b/stdlib/source/library/lux/math/number/i32.lux
new file mode 100644
index 000000000..a0ecfabc2
--- /dev/null
+++ b/stdlib/source/library/lux/math/number/i32.lux
@@ -0,0 +1,24 @@
+(.module:
+ [library
+ [lux (#- i64)
+ [abstract
+ [equivalence (#+ Equivalence)]]
+ [data
+ ["." maybe]]
+ [type (#+ :by_example)]]]
+ [//
+ ["." i64 (#+ Sub)]])
+
+(def: sub (maybe.assume (i64.sub 32)))
+
+(def: #export I32
+ (:by_example [size]
+ (Sub size)
+ ..sub
+
+ (I64 size)))
+
+(def: #export equivalence (Equivalence I32) (\ ..sub &equivalence))
+(def: #export width Nat (\ ..sub width))
+(def: #export i32 (-> I64 I32) (\ ..sub narrow))
+(def: #export i64 (-> I32 I64) (\ ..sub widen))