diff options
Diffstat (limited to 'module/datetime/timespec.scm')
-rw-r--r-- | module/datetime/timespec.scm | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/module/datetime/timespec.scm b/module/datetime/timespec.scm index 099634b6..9bfcc402 100644 --- a/module/datetime/timespec.scm +++ b/module/datetime/timespec.scm @@ -6,10 +6,11 @@ (define-module (datetime timespec) :export (make-timespec timespec? timespec-time timespec-sign timespec-type) - :use-module ((hnh util) :select (set define*-public unless let*)) + :use-module ((hnh util) :select (set define*-public unless)) :use-module ((hnh util exceptions) :select (warning)) :use-module (datetime) :use-module (srfi srfi-1) + :use-module (srfi srfi-71) :use-module (srfi srfi-9 gnu) :use-module (calp translation) ) @@ -50,8 +51,10 @@ (time-b (timespec-time spec))) (if (time< time-a time-b) (make-timespec (time- time-b time-a) + '- (timespec-type done)) + (make-timespec (time- time-a time-b) '+ (timespec-type done)) - (set (timespec-time done) (time- time-b))))] + ))] ;; + - [(and (eq? '+ (timespec-sign done)) (eq? '- (timespec-sign spec))) @@ -60,14 +63,16 @@ (if (time< time-a time-b) (make-timespec (time- time-b time-a) '- (timespec-type done)) - (set (timespec-time done) (time+ time-b))))])) + (make-timespec (time- time-a time-b) + '+ (timespec-type done)) + ))])) (timespec-zero) specs)) (define*-public (parse-time-spec string optional: (suffixes '(#\s #\w #\u #\g #\z))) - (let* ((type string + (let ((type string (cond [(string-rindex string (list->char-set suffixes)) => (lambda (idx) (values (string-ref string idx) |