aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/source/lux/control/number.lux8
-rw-r--r--stdlib/source/lux/data/number.lux3
-rw-r--r--stdlib/source/lux/math/ratio.lux1
-rw-r--r--stdlib/test/test/lux/data/number.lux92
4 files changed, 50 insertions, 54 deletions
diff --git a/stdlib/source/lux/control/number.lux b/stdlib/source/lux/control/number.lux
index e24d61d9b..52ed7bf0f 100644
--- a/stdlib/source/lux/control/number.lux
+++ b/stdlib/source/lux/control/number.lux
@@ -1,14 +1,10 @@
(;module:
- lux
- (lux/control [ord]))
+ lux)
## [Signatures]
(sig: #export (Number n)
{#;doc "Everything that should be expected of a number type."}
-
- (: (ord;Ord n)
- ord)
-
+
(do-template [<name>]
[(: (-> n n n) <name>)]
[+] [-] [*] [/] [%])
diff --git a/stdlib/source/lux/data/number.lux b/stdlib/source/lux/data/number.lux
index ab097e449..998b42ea8 100644
--- a/stdlib/source/lux/data/number.lux
+++ b/stdlib/source/lux/data/number.lux
@@ -36,7 +36,6 @@
)
(struct: #export _ (Number Nat)
- (def: ord Ord<Nat>)
(def: + n.+)
(def: - n.-)
(def: * n.*)
@@ -52,7 +51,6 @@
(do-template [<type> <ord> <+> <-> <*> </> <%> <=> <<> <0> <1> <-1>]
[(struct: #export _ (Number <type>)
- (def: ord <ord>)
(def: + <+>)
(def: - <->)
(def: * <*>)
@@ -75,7 +73,6 @@
)
(struct: #export _ (Number Deg)
- (def: ord Ord<Deg>)
(def: + d.+)
(def: - d.-)
(def: * d.*)
diff --git a/stdlib/source/lux/math/ratio.lux b/stdlib/source/lux/math/ratio.lux
index 5d23f6961..fb86b1fed 100644
--- a/stdlib/source/lux/math/ratio.lux
+++ b/stdlib/source/lux/math/ratio.lux
@@ -109,7 +109,6 @@
(def: >= q.>=))
(struct: #export _ (Number Ratio)
- (def: ord Ord<Ratio>)
(def: + q.+)
(def: - q.-)
(def: * q.*)
diff --git a/stdlib/test/test/lux/data/number.lux b/stdlib/test/test/lux/data/number.lux
index f2645cd2e..6f296a628 100644
--- a/stdlib/test/test/lux/data/number.lux
+++ b/stdlib/test/test/lux/data/number.lux
@@ -21,13 +21,14 @@
["Nat" R;nat Eq<Nat> Ord<Nat>]
["Int" R;int Eq<Int> Ord<Int>]
["Real" R;real Eq<Real> Ord<Real>]
- ["Deg" R;deg Eq<Deg> Ord<Deg>]
+ ["Deg" R;deg Eq<Deg> Ord<Deg>]
)
-(do-template [category rand-gen <Number>]
+(do-template [category rand-gen <Number> <Ord>]
[(test: (format "[" category "] " "Number")
[x rand-gen
- #let [(^open) <Number>]]
+ #let [(^open) <Number>
+ (^open) <Ord>]]
(assert "" (and (>= x (abs x))
## abs(0.0) == 0.0 && negate(abs(0.0)) == -0.0
(or (Text/= "Real" category)
@@ -39,15 +40,16 @@
(abs x)))))))]
## ["Nat" R;nat Number<Nat>]
- ["Int" R;int Number<Int>]
- ["Real" R;real Number<Real>]
- ["Deg" R;deg Number<Deg>]
+ ["Int" R;int Number<Int> Ord<Int>]
+ ["Real" R;real Number<Real> Ord<Real>]
+ ["Deg" R;deg Number<Deg> Ord<Deg>]
)
-(do-template [category rand-gen <Enum> <Number>]
+(do-template [category rand-gen <Enum> <Number> <Ord>]
[(test: (format "[" category "] " "Enum")
[x rand-gen]
- (assert "" (let [(^open) <Number>]
+ (assert "" (let [(^open) <Number>
+ (^open) <Ord>]
(and (> x
(:: <Enum> succ x))
(< x
@@ -59,53 +61,55 @@
(|> x (:: <Enum> succ) (:: <Enum> pred)))
))))]
- ["Nat" R;nat Enum<Nat> Number<Nat>]
- ["Int" R;int Enum<Int> Number<Int>]
+ ["Nat" R;nat Enum<Nat> Number<Nat> Ord<Nat>]
+ ["Int" R;int Enum<Int> Number<Int> Ord<Int>]
)
-(do-template [category rand-gen <Number> <Interval> <test>]
+(do-template [category rand-gen <Number> <Ord> <Interval> <test>]
[(test: (format "[" category "] " "Interval")
[x (|> rand-gen (R;filter <test>))
- #let [(^open) <Number>]]
+ #let [(^open) <Number>
+ (^open) <Ord>]]
(assert "" (and (<= x (:: <Interval> bottom))
(>= x (:: <Interval> top)))))]
- ["Nat" R;nat Number<Nat> Interval<Nat> (lambda [_] true)]
- ["Int" R;int Number<Int> Interval<Int> (lambda [_] true)]
+ ["Nat" R;nat Number<Nat> Ord<Nat> Interval<Nat> (lambda [_] true)]
+ ["Int" R;int Number<Int> Ord<Int> Interval<Int> (lambda [_] true)]
## Both min and max values will be positive (thus, greater than zero)
- ["Real" R;real Number<Real> Interval<Real> (r.> 0.0)]
- ["Deg" R;deg Number<Deg> Interval<Deg> (lambda [_] true)]
+ ["Real" R;real Number<Real> Ord<Real> Interval<Real> (r.> 0.0)]
+ ["Deg" R;deg Number<Deg> Ord<Deg> Interval<Deg> (lambda [_] true)]
)
-(do-template [category rand-gen <Number> <Monoid> <cap> <test>]
+(do-template [category rand-gen <Number> <Ord> <Monoid> <cap> <test>]
[(test: (format "[" category "] " "Monoid")
[x (|> rand-gen (:: @ map (|>. (:: <Number> abs) <cap>)) (R;filter <test>))
#let [(^open) <Number>
+ (^open) <Ord>
(^open) <Monoid>]]
(assert "Appending to unit doesn't change the value."
(and (= x (append unit x))
(= x (append x unit))
(= unit (append unit unit)))))]
- ["Nat/Add" R;nat Number<Nat> Add@Monoid<Nat> (n.% +1000) (lambda [_] true)]
- ["Nat/Mul" R;nat Number<Nat> Mul@Monoid<Nat> (n.% +1000) (lambda [_] true)]
- ["Nat/Min" R;nat Number<Nat> Min@Monoid<Nat> (n.% +1000) (lambda [_] true)]
- ["Nat/Max" R;nat Number<Nat> Max@Monoid<Nat> (n.% +1000) (lambda [_] true)]
- ["Int/Add" R;int Number<Int> Add@Monoid<Int> (i.% 1000) (lambda [_] true)]
- ["Int/Mul" R;int Number<Int> Mul@Monoid<Int> (i.% 1000) (lambda [_] true)]
- ["Int/Min" R;int Number<Int> Min@Monoid<Int> (i.% 1000) (lambda [_] true)]
- ["Int/Max" R;int Number<Int> Max@Monoid<Int> (i.% 1000) (lambda [_] true)]
- ["Real/Add" R;real Number<Real> Add@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
- ["Real/Mul" R;real Number<Real> Mul@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
- ["Real/Min" R;real Number<Real> Min@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
- ["Real/Max" R;real Number<Real> Max@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
- ["Deg/Add" R;deg Number<Deg> Add@Monoid<Deg> (d.% .125) (lambda [_] true)]
- ## ["Deg/Mul" R;deg Number<Deg> Mul@Monoid<Deg> (d.% .125) (lambda [_] true)]
- ["Deg/Min" R;deg Number<Deg> Min@Monoid<Deg> (d.% .125) (lambda [_] true)]
- ["Deg/Max" R;deg Number<Deg> Max@Monoid<Deg> (d.% .125) (lambda [_] true)]
+ ["Nat/Add" R;nat Number<Nat> Ord<Nat> Add@Monoid<Nat> (n.% +1000) (lambda [_] true)]
+ ["Nat/Mul" R;nat Number<Nat> Ord<Nat> Mul@Monoid<Nat> (n.% +1000) (lambda [_] true)]
+ ["Nat/Min" R;nat Number<Nat> Ord<Nat> Min@Monoid<Nat> (n.% +1000) (lambda [_] true)]
+ ["Nat/Max" R;nat Number<Nat> Ord<Nat> Max@Monoid<Nat> (n.% +1000) (lambda [_] true)]
+ ["Int/Add" R;int Number<Int> Ord<Int> Add@Monoid<Int> (i.% 1000) (lambda [_] true)]
+ ["Int/Mul" R;int Number<Int> Ord<Int> Mul@Monoid<Int> (i.% 1000) (lambda [_] true)]
+ ["Int/Min" R;int Number<Int> Ord<Int> Min@Monoid<Int> (i.% 1000) (lambda [_] true)]
+ ["Int/Max" R;int Number<Int> Ord<Int> Max@Monoid<Int> (i.% 1000) (lambda [_] true)]
+ ["Real/Add" R;real Number<Real> Ord<Real> Add@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
+ ["Real/Mul" R;real Number<Real> Ord<Real> Mul@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
+ ["Real/Min" R;real Number<Real> Ord<Real> Min@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
+ ["Real/Max" R;real Number<Real> Ord<Real> Max@Monoid<Real> (r.% 1000.0) (r.> 0.0)]
+ ["Deg/Add" R;deg Number<Deg> Ord<Deg> Add@Monoid<Deg> (d.% .125) (lambda [_] true)]
+ ## ["Deg/Mul" R;deg Number<Deg> Ord<Deg> Mul@Monoid<Deg> (d.% .125) (lambda [_] true)]
+ ["Deg/Min" R;deg Number<Deg> Ord<Deg> Min@Monoid<Deg> (d.% .125) (lambda [_] true)]
+ ["Deg/Max" R;deg Number<Deg> Ord<Deg> Max@Monoid<Deg> (d.% .125) (lambda [_] true)]
)
-(do-template [<category> <rand-gen> <Number> <Codec>]
+(do-template [<category> <rand-gen> <Eq> <Codec>]
[(test: (format "[" <category> "] " "Codec")
[x <rand-gen>]
(assert "Can encode/decode values."
@@ -113,18 +117,18 @@
(:: <Codec> encode)
(:: <Codec> decode)
(case> (#;Right x')
- (:: <Number> = x x')
+ (:: <Eq> = x x')
(#;Left _)
false))))]
- ["Nat" R;nat Number<Nat> Codec<Text,Nat>]
- ["Int" R;int Number<Int> Codec<Text,Int>]
- ["Real" R;real Number<Real> Codec<Text,Real>]
- ["Deg" R;deg Number<Deg> Codec<Text,Deg>]
+ ["Nat" R;nat Eq<Nat> Codec<Text,Nat>]
+ ["Int" R;int Eq<Int> Codec<Text,Int>]
+ ["Real" R;real Eq<Real> Codec<Text,Real>]
+ ["Deg" R;deg Eq<Deg> Codec<Text,Deg>]
)
-(do-template [<category> <rand-gen> <Number> <Codec>]
+(do-template [<category> <rand-gen> <Eq> <Codec>]
[(test: (format "[" <category> "] " "Alternative formats")
[x <rand-gen>]
(assert "Can encode/decode values."
@@ -132,12 +136,12 @@
(:: <Codec> encode)
(:: <Codec> decode)
(case> (#;Right x')
- (:: <Number> = x x')
+ (:: <Eq> = x x')
(#;Left _)
false))))]
- ["Nat/Binary" R;nat Number<Nat> Binary@Codec<Text,Nat>]
- ["Nat/Octal" R;nat Number<Nat> Octal@Codec<Text,Nat>]
- ["Nat/Hex" R;nat Number<Nat> Hex@Codec<Text,Nat>]
+ ["Nat/Binary" R;nat Eq<Nat> Binary@Codec<Text,Nat>]
+ ["Nat/Octal" R;nat Eq<Nat> Octal@Codec<Text,Nat>]
+ ["Nat/Hex" R;nat Eq<Nat> Hex@Codec<Text,Nat>]
)