Make immediate-query able to yield multiple values

This commit is contained in:
Tony Garnock-Jones 2016-11-24 10:36:38 +13:00
parent f201bea5c6
commit a3335800f6
2 changed files with 9 additions and 5 deletions

View File

@ -645,10 +645,14 @@
(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)))))
(define-syntax (immediate-query stx)
(syntax-case stx ()
[(_ [op args ...] ...)
(with-syntax [((query-result ...) (generate-temporaries #'(op ...)))]
(syntax/loc stx
(react/suspend (k)
(define query-result (op query-result args ...)) ...
(on-start (flush!) (k (query-result) ...)))))]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@ -34,4 +34,4 @@
(define/query-value id default (config scope (list 'key $val)) val)]))
(define (config-ref #:scope [scope ?] key default)
(immediate-query query-value default (config scope (list key $val)) val))
(immediate-query (query-value default (config scope (list key $val)) val)))