diff --git a/racket/syndicate/actor.rkt b/racket/syndicate/actor.rkt index 7dd638a..040e807 100644 --- a/racket/syndicate/actor.rkt +++ b/racket/syndicate/actor.rkt @@ -43,6 +43,7 @@ define/query-set define/query-hash define/query-hash-set + immediate-query send! assert! @@ -644,6 +645,11 @@ (define-syntax-rule (define/query-hash id P x ...) (define id (query-hash id P x ...))) (define-syntax-rule (define/query-hash-set id P x ...) (define id (query-hash-set id P x ...))) +(define-syntax-rule (immediate-query op args ...) + (react/suspend (k) + (define query-result (op query-result args ...)) + (on-start (flush!) (k (query-result))))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require auxiliary-macro-context) diff --git a/racket/syndicate/drivers/config.rkt b/racket/syndicate/drivers/config.rkt index 89a44be..ff4d983 100644 --- a/racket/syndicate/drivers/config.rkt +++ b/racket/syndicate/drivers/config.rkt @@ -34,7 +34,4 @@ (define/query-value id default (config scope (list 'key $val)) val)])) (define (config-ref #:scope [scope ?] key default) - (react/suspend (k) - (define/query-value actual default (config scope (list key $val)) val) - (on-start (flush!) - (k (actual))))) + (immediate-query query-value default (config scope (list key $val)) val))