aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux28
1 files changed, 15 insertions, 13 deletions
diff --git a/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux
index c4cd0a909..3bdfc614f 100644
--- a/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux
+++ b/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux
@@ -327,25 +327,27 @@
(@@ queue)))
(process//loop ..unit)))))))
-(runtime: (process//future procedure)
- (_.begin (list (_.set! process//incoming (_.cons (@@ procedure) (@@ process//incoming)))
- ..unit)))
-
(runtime: (process//schedule milli-seconds procedure)
- (with-vars [start process now _ignored]
- (_.let (list [start (io//current-time ..unit)])
- (_.letrec (list [process (_.lambda _ignored
- (_.let (list [now (io//current-time ..unit)])
- (_.if (|> (@@ now) (_.- (@@ start)) (_.>= (@@ milli-seconds)))
- (_.apply (@@ procedure) (list ..unit))
- (process//future (@@ process)))))])
- (process//future (@@ process))))))
+ (let [process//future (function (_ process)
+ (_.set! process//incoming (_.cons process (@@ process//incoming))))]
+ (_.begin
+ (list
+ (_.if (_.= (_.int 0) (@@ milli-seconds))
+ (process//future (@@ procedure))
+ (with-vars [start process now _ignored]
+ (_.let (list [start (io//current-time ..unit)])
+ (_.letrec (list [process (_.lambda _ignored
+ (_.let (list [now (io//current-time ..unit)])
+ (_.if (|> (@@ now) (_.- (@@ start)) (_.>= (@@ milli-seconds)))
+ (_.apply (@@ procedure) (list ..unit))
+ (process//future (@@ process)))))])
+ (process//future (@@ process))))))
+ ..unit))))
(def: runtime//process
Runtime
(_.begin (list (_.define process//incoming (list) (_.list (list)))
@@process//loop
- @@process//future
@@process//schedule)))
(def: runtime