(during (know P) O ...) for internal knowledge
This commit is contained in:
parent
e6b733325c
commit
7462af708b
|
@ -523,14 +523,18 @@
|
|||
|
||||
(define-syntax (during stx)
|
||||
(syntax-parse stx
|
||||
[(_ P O ...)
|
||||
(define E-stx (syntax/loc #'P (asserted P)))
|
||||
#:literals (know)
|
||||
[(_ (~or (~and K (know P)) P) O ...)
|
||||
(define E-stx (quasisyntax/loc #'P #,(if (attribute K)
|
||||
#'K
|
||||
#'(asserted P))))
|
||||
(define R-stx (if (attribute K) #'forget #'retracted))
|
||||
(define-values (_proj _pat _bindings instantiated)
|
||||
(analyze-pattern E-stx #'P))
|
||||
(quasisyntax/loc stx
|
||||
(on #,E-stx
|
||||
(let ((p #,instantiated))
|
||||
(react (stop-when (retracted p))
|
||||
(react (stop-when (#,R-stx p))
|
||||
O ...))))]))
|
||||
|
||||
(define-syntax (during/spawn stx)
|
||||
|
|
|
@ -41,10 +41,9 @@ balance = 8
|
|||
(when (not (negative? new))
|
||||
(stop-current-facet))))))
|
||||
|
||||
(on (know (overdraft))
|
||||
(printf "know overdraft!\n"))
|
||||
(on (forget (overdraft))
|
||||
(printf "no longer in overdraft\n")))
|
||||
(during (know (overdraft))
|
||||
(on-start (printf "know overdraft!\n"))
|
||||
(on-stop (printf "no longer in overdraft\n"))))
|
||||
|
||||
(spawn
|
||||
(on (asserted (balance $v))
|
||||
|
|
Loading…
Reference in New Issue