aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/time/duration.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/lux/time/duration.lux36
1 files changed, 22 insertions, 14 deletions
diff --git a/stdlib/source/lux/time/duration.lux b/stdlib/source/lux/time/duration.lux
index 35401497a..699abe31d 100644
--- a/stdlib/source/lux/time/duration.lux
+++ b/stdlib/source/lux/time/duration.lux
@@ -37,15 +37,17 @@
)
(do-template [<name> <op>]
- [(def: #export (<name> scalar duration)
- (-> Int Duration Duration)
- (:abstraction (<op> scalar (:representation duration))))]
+ [(def: #export (<name> scalar)
+ (-> Nat Duration Duration)
+ (|>> :representation (<op> (.int scalar)) :abstraction))]
[scale-up i/*]
[scale-down i//]
)
- (def: #export inverse (scale-up -1))
+ (def: #export inverse
+ (-> Duration Duration)
+ (|>> :representation (i/* -1) :abstraction))
(def: #export (difference from to)
(-> Duration Duration Duration)
@@ -95,15 +97,21 @@
)
)
-(def: #export empty Duration (from-millis +0))
-(def: #export milli Duration (from-millis +1))
-(def: #export second Duration (scale-up +1_000 milli))
-(def: #export minute Duration (scale-up +60 second))
-(def: #export hour Duration (scale-up +60 minute))
-(def: #export day Duration (scale-up +24 hour))
-(def: #export week Duration (scale-up +7 day))
-(def: #export normal-year Duration (scale-up +365 day))
-(def: #export leap-year Duration (merge day normal-year))
+(def: #export empty (from-millis +0))
+(def: #export milli-second (from-millis +1))
+
+(do-template [<name> <scale> <base>]
+ [(def: #export <name> (scale-up <scale> <base>))]
+
+ [second 1_000 milli-second]
+ [minute 60 second]
+ [hour 60 minute]
+ [day 24 hour]
+ [week 7 day]
+ [normal-year 365 day]
+ )
+
+(def: #export leap-year (merge day normal-year))
(structure: #export _ (Monoid Duration)
(def: identity empty)
@@ -119,7 +127,7 @@
(int/abs days)
days)
time-left (if signed?
- (scale-up -1 time-left)
+ (..inverse time-left)
time-left)
[hours time-left] [(query hour time-left) (frame hour time-left)]
[minutes time-left] [(query minute time-left) (frame minute time-left)]