define/await
This commit is contained in:
parent
092fb7eb2f
commit
41b38e7fb2
|
@ -1,13 +1,15 @@
|
|||
#lang syndicate
|
||||
#lang racket/base
|
||||
;;; SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
;;; SPDX-FileCopyrightText: Copyright © 2022 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||
|
||||
(provide async
|
||||
async?
|
||||
suspend
|
||||
await)
|
||||
await
|
||||
define/await)
|
||||
|
||||
(require (only-in (submod "actor.rkt" internals) with-active-facet))
|
||||
(require "syntax.rkt")
|
||||
|
||||
(define prompt-tag (make-continuation-prompt-tag 'syndicate))
|
||||
|
||||
|
@ -45,6 +47,12 @@
|
|||
(let ((k (lambda results (stop-facet facet (apply k results)))))
|
||||
body ...)))))
|
||||
|
||||
(define-syntax-rule (define/await [name (op args ...)] ...)
|
||||
(define-values (name ...)
|
||||
(await k
|
||||
(define name (op query-result args ...)) ...
|
||||
(sync! this-target (k name ...)))))
|
||||
|
||||
(module+ test
|
||||
(require "dataspace.rkt")
|
||||
(actor-system/dataspace (ds)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
(all-from-out "query.rkt")
|
||||
(all-from-out "service.rkt")
|
||||
(all-from-out "event-expander.rkt")
|
||||
(all-from-out "async.rkt")
|
||||
(all-from-out preserves)
|
||||
(all-from-out preserves-schema)
|
||||
|
||||
|
@ -23,6 +24,7 @@
|
|||
(require "query.rkt")
|
||||
(require "service.rkt")
|
||||
(require "event-expander.rkt")
|
||||
(require "async.rkt")
|
||||
(require preserves)
|
||||
(require preserves-schema)
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
during*)
|
||||
|
||||
(require racket/match)
|
||||
(require racket/splicing)
|
||||
(require racket/stxparam)
|
||||
(require (for-syntax racket/base))
|
||||
(require (for-syntax racket/syntax))
|
||||
|
@ -304,8 +305,9 @@
|
|||
(define-syntax (at stx)
|
||||
(syntax-case stx ()
|
||||
[(_ target-expr items ...)
|
||||
#`(let ((target target-expr))
|
||||
(syntax-parameterize ([this-target (make-rename-transformer #'target)])
|
||||
#`(begin
|
||||
(define target target-expr)
|
||||
(splicing-syntax-parameterize ([this-target (make-rename-transformer #'target)])
|
||||
items ...))]))
|
||||
|
||||
(define-syntax assert
|
||||
|
|
Loading…
Reference in New Issue