Extract collected values in (until) macro
This commit is contained in:
parent
2004d30f3a
commit
4b0d800b5f
|
@ -203,9 +203,14 @@
|
||||||
[(_ [O ...] [E Oe ...] ...)
|
[(_ [O ...] [E Oe ...] ...)
|
||||||
(expand-state 'call #'() #'() #'() #'(O ...) #'([E Oe ...] ...))]))
|
(expand-state 'call #'() #'() #'() #'(O ...) #'([E Oe ...] ...))]))
|
||||||
|
|
||||||
|
(define-syntax (named-binding-values stx)
|
||||||
|
(syntax-parse stx
|
||||||
|
[(_ #:collect [(id init) ...] O ...) #'(values id ...)]
|
||||||
|
[(_ O ...) #'(void)]))
|
||||||
|
|
||||||
;; Sugar
|
;; Sugar
|
||||||
(define-syntax-rule (until E O ...)
|
(define-syntax-rule (until E O ...)
|
||||||
(state [O ...] [E (void)])) ;; TODO: return collected value(s)
|
(state [O ...] [E (named-binding-values O ...)]))
|
||||||
|
|
||||||
;; Sugar
|
;; Sugar
|
||||||
(define-syntax-rule (forever O ...)
|
(define-syntax-rule (forever O ...)
|
||||||
|
@ -346,7 +351,7 @@
|
||||||
(- (length state-variable-init-exps) 1))
|
(- (length state-variable-init-exps) 1))
|
||||||
|
|
||||||
(for ((edge (syntax->list edges)))
|
(for ((edge (syntax->list edges)))
|
||||||
(printf "~v\n" edge))
|
(printf "~v\n" (syntax->datum edge)))
|
||||||
|
|
||||||
(define action-fn-stx
|
(define action-fn-stx
|
||||||
#`(lambda (self-id caller-id)
|
#`(lambda (self-id caller-id)
|
||||||
|
|
Loading…
Reference in New Issue