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