aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
authorEduardo Julian2018-08-28 22:04:12 -0400
committerEduardo Julian2018-08-28 22:04:12 -0400
commitee73994bf7733971561e32a28ac06141dbe0134b (patch)
treead33407cb4163adc8b884e386dbc9ccd8c7a7937 /stdlib
parent6e30954da01860c6488eab66216c3c2e97b65ea5 (diff)
Small additions to stdlib.
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/source/lux.lux10
-rw-r--r--stdlib/source/lux/data/collection/array.lux10
-rw-r--r--stdlib/source/lux/time/duration.lux15
3 files changed, 33 insertions, 2 deletions
diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux
index 916b77797..1fb0afe19 100644
--- a/stdlib/source/lux.lux
+++ b/stdlib/source/lux.lux
@@ -2228,7 +2228,7 @@
subjectH (high-bits subject)]
(if ("lux int <" subjectH testH)
#1
- (if ("lux i64 =" testH subjectH)
+ (if ("lux i64 =" subjectH testH)
("lux int <"
(low-bits subject)
(low-bits test))
@@ -6206,3 +6206,11 @@
[no yes]
[off on]
)
+
+(def: #export nat-to-frac
+ (-> Nat Frac)
+ (|>> ..int ..int-to-frac))
+
+(def: #export frac-to-nat
+ (-> Frac Nat)
+ (|>> ..frac-to-int ..nat))
diff --git a/stdlib/source/lux/data/collection/array.lux b/stdlib/source/lux/data/collection/array.lux
index 6036d96ae..2e92ec64b 100644
--- a/stdlib/source/lux/data/collection/array.lux
+++ b/stdlib/source/lux/data/collection/array.lux
@@ -40,6 +40,16 @@
(#.Some value)))}))
#.None))
+(def: #export (contains? index array)
+ (All [a]
+ (-> Nat (Array a) Bit))
+ (case (..read index array)
+ (#.Some _)
+ #1
+
+ _
+ #0))
+
(def: #export (write i x xs)
(All [a]
(-> Nat a (Array a) (Array a)))
diff --git a/stdlib/source/lux/time/duration.lux b/stdlib/source/lux/time/duration.lux
index 91f262fe4..20ef20c8c 100644
--- a/stdlib/source/lux/time/duration.lux
+++ b/stdlib/source/lux/time/duration.lux
@@ -2,7 +2,7 @@
[lux #*
[control
equivalence
- order
+ [order (#+ Order)]
codec
[monoid (#+ Monoid)]
["p" parser]
@@ -71,6 +71,19 @@
[>= i/>=]
))
+ (open: "duration/." Order<Duration>)
+
+ (do-template [<name> <op>]
+ [(def: #export (<name> left right)
+ (-> Duration Duration Duration)
+ (if (<op> left right)
+ right
+ left))]
+
+ [max duration/>]
+ [min duration/<]
+ )
+
(do-template [<name> <op>]
[(def: #export <name>
(-> Duration Bit)