aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/data/number/nat.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/lux/data/number/nat.lux')
-rw-r--r--stdlib/source/lux/data/number/nat.lux36
1 files changed, 15 insertions, 21 deletions
diff --git a/stdlib/source/lux/data/number/nat.lux b/stdlib/source/lux/data/number/nat.lux
index f6d5fa19c..b1504f048 100644
--- a/stdlib/source/lux/data/number/nat.lux
+++ b/stdlib/source/lux/data/number/nat.lux
@@ -122,17 +122,12 @@
("lux coerce" Int (../ parameter subject)))]
("lux i64 -" flat subject)))
-(def: #export (mod parameter subject)
- (-> Nat Nat Nat)
- (let [exact (|> subject (../ parameter) (..* parameter))]
- (|> subject (..- exact))))
-
(def: #export (gcd a b)
{#.doc "Greatest Common Divisor."}
(-> Nat Nat Nat)
(case b
0 a
- _ (gcd b (..mod b a))))
+ _ (gcd b (..% b a))))
(def: #export (lcm a b)
{#.doc "Least Common Multiple."}
@@ -142,8 +137,7 @@
0
_
- (|> a (../ (..gcd a b)) (..* b))
- ))
+ (|> a (../ (..gcd a b)) (..* b))))
(def: #export even?
(-> Nat Bit)
@@ -195,21 +189,21 @@
[maximum ..max (\ ..interval bottom)]
)
-(def: #export (binary-character value)
+(def: (binary-character value)
(-> Nat (Maybe Text))
(case value
0 (#.Some "0")
1 (#.Some "1")
_ #.None))
-(def: #export (binary-value digit)
+(def: (binary-value digit)
(-> Nat (Maybe Nat))
(case digit
(^ (char "0")) (#.Some 0)
(^ (char "1")) (#.Some 1)
_ #.None))
-(def: #export (octal-character value)
+(def: (octal-character value)
(-> Nat (Maybe Text))
(case value
0 (#.Some "0")
@@ -222,7 +216,7 @@
7 (#.Some "7")
_ #.None))
-(def: #export (octal-value digit)
+(def: (octal-value digit)
(-> Nat (Maybe Nat))
(case digit
(^ (char "0")) (#.Some 0)
@@ -235,7 +229,7 @@
(^ (char "7")) (#.Some 7)
_ #.None))
-(def: #export (decimal-character value)
+(def: (decimal-character value)
(-> Nat (Maybe Text))
(case value
0 (#.Some "0")
@@ -250,7 +244,7 @@
9 (#.Some "9")
_ #.None))
-(def: #export (decimal-value digit)
+(def: (decimal-value digit)
(-> Nat (Maybe Nat))
(case digit
(^ (char "0")) (#.Some 0)
@@ -265,7 +259,7 @@
(^ (char "9")) (#.Some 9)
_ #.None))
-(def: #export (hexadecimal-character value)
+(def: (hexadecimal-character value)
(-> Nat (Maybe Text))
(case value
0 (#.Some "0")
@@ -286,7 +280,7 @@
15 (#.Some "F")
_ #.None))
-(def: #export (hexadecimal-value digit)
+(def: (hexadecimal-value digit)
(-> Nat (Maybe Nat))
(case digit
(^ (char "0")) (#.Some 0)
@@ -307,7 +301,7 @@
(^or (^ (char "f")) (^ (char "F"))) (#.Some 15)
_ #.None))
-(template [<struct> <base> <to-character> <to-value> <error>]
+(template [<base> <struct> <to-character> <to-value> <error>]
[(structure: #export <struct>
(Codec Text Nat)
@@ -339,10 +333,10 @@
(#try.Success output)))
(#try.Failure ("lux text concat" <error> repr))))))]
- [binary 2 binary-character binary-value "Invalid binary syntax for Nat: "]
- [octal 8 octal-character octal-value "Invalid octal syntax for Nat: "]
- [decimal 10 decimal-character decimal-value "Invalid decimal syntax for Nat: "]
- [hex 16 hexadecimal-character hexadecimal-value "Invalid hexadecimal syntax for Nat: "]
+ [02 binary binary-character binary-value "Invalid binary syntax for Nat: "]
+ [08 octal octal-character octal-value "Invalid octal syntax for Nat: "]
+ [10 decimal decimal-character decimal-value "Invalid decimal syntax for Nat: "]
+ [16 hex hexadecimal-character hexadecimal-value "Invalid hexadecimal syntax for Nat: "]
)
(structure: #export hash