diff options
Diffstat (limited to 'stdlib/source/lux/data/number/nat.lux')
-rw-r--r-- | stdlib/source/lux/data/number/nat.lux | 36 |
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 |