diff --git a/src/Compiler/Scheme/Common.idr b/src/Compiler/Scheme/Common.idr index 0f46845b11e..d1ca70c4433 100644 --- a/src/Compiler/Scheme/Common.idr +++ b/src/Compiler/Scheme/Common.idr @@ -562,7 +562,7 @@ parameters (constants : SortedSet Name, = schOp op !(schArgs i args) schExp i (NmExtPrim fc p args) = schExtPrim i (toPrim p) args - schExp i (NmForce fc lr t) = pure $ "(blodwen-force " ++ !(schExp i t) ++ ")" + schExp i (NmForce fc lr t) = pure $ "(blodwen-force-lazy " ++ !(schExp i t) ++ ")" schExp i (NmDelay fc lr t) = pure $ "(blodwen-delay-lazy (lambda () " ++ !(schExp i t) ++ "))" schExp i (NmConCase fc sc alts def) = cond [(recordCase alts, schRecordCase i sc alts def), diff --git a/support/chez/support.ss b/support/chez/support.ss index cb2e63d08c7..e8d23a8ede3 100644 --- a/support/chez/support.ss +++ b/support/chez/support.ss @@ -27,7 +27,7 @@ (define (blodwen-delay-lazy f) (weak-cons bwp f)) -(define (blodwen-force e) +(define (blodwen-force-lazy e) (let ((exval (car e))) (if (bwp-object? exval) (let ((val ((cdr e)))) @@ -453,7 +453,7 @@ (define (blodwen-make-future work) (let ([future (make-future-internal #f #f (make-mutex) (make-condition))]) (fork-thread (lambda () - (let ([result (blodwen-force work)]) + (let ([result (blodwen-force-lazy work)]) (with-mutex (future-internal-mutex future) (set-future-internal-result! future result) (set-future-internal-ready! future #t) @@ -607,6 +607,9 @@ (define (blodwen-apply obj arg) (obj arg)) +(define (blodwen-force obj) + (obj)) + (define (blodwen-read-symbol sym) (symbol->string sym)) diff --git a/support/gambit/support.scm b/support/gambit/support.scm index c188b18ba21..06511620d65 100644 --- a/support/gambit/support.scm +++ b/support/gambit/support.scm @@ -28,7 +28,7 @@ (define (blodwen-delay-lazy f) f) -(define (blodwen-force f) +(define (blodwen-force-lazy f) (f)) (define (blodwen-toSignedInt x bits) diff --git a/support/racket/support.rkt b/support/racket/support.rkt index f0a35d09eb2..0945442e337 100644 --- a/support/racket/support.rkt +++ b/support/racket/support.rkt @@ -21,7 +21,7 @@ (define (blodwen-delay-lazy f) (mcons (make-weak-box bwp) f)) -(define (blodwen-force e) +(define (blodwen-force-lazy e) (let ((exval (weak-box-value (mcar e) bwp))) (if (eq? exval bwp) (let ((val ((mcdr e)))) @@ -455,7 +455,7 @@ ; ) -(define (blodwen-make-future work) (future (lambda () (blodwen-force work)))) +(define (blodwen-make-future work) (future (lambda () (blodwen-force-lazy work)))) (define (blodwen-await-future ty future) (touch future)) ;; NB: These should *ALWAYS* be used in multi-threaded programs since Racket @@ -580,6 +580,9 @@ (define (blodwen-apply obj arg) (obj arg)) +(define (blodwen-force obj) + (obj)) + (define (blodwen-read-symbol sym) (symbol->string sym))