diff --git a/racket/typed/roles.rkt b/racket/typed/roles.rkt index c655938..b2a6b51 100644 --- a/racket/typed/roles.rkt +++ b/racket/typed/roles.rkt @@ -22,6 +22,7 @@ define/query-value define/query-set define/query-hash + stop-when ;; endpoints assert on field ;; expressions @@ -338,6 +339,17 @@ (on (retracted p) (set! x (hash-remove (ref x) e-key))))]) +(define-typed-syntax (stop-when E script ...) ≫ + [[forged-name ≫ _ : FacetName] ⊢ forged-name ≫ forged-name-] + #:with forged-name (attach #'(#%app- syndicate:current-facet-id) + ': + (type-eval #'FacetName)) + ---------------------------------------- + [≻ (on E + (let ([x forged-name]) + (stop x + script ...)))]) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Expressions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;