Try to make context vars nestable in task action args
This commit is contained in:
parent
b7e4b9dc74
commit
f2f88ce0dc
3 changed files with 19 additions and 29 deletions
|
@ -9,8 +9,6 @@
|
|||
get-context-triggers
|
||||
context-triggered?
|
||||
register-context-var!
|
||||
context-ref
|
||||
resolve-context-ref
|
||||
resolve-context-refs))
|
||||
|
||||
(define-record-type <context>
|
||||
|
@ -23,18 +21,13 @@
|
|||
(define* (context #:key scratch-dir init-vars)
|
||||
(make-context scratch-dir init-vars))
|
||||
|
||||
(define-record-type <context-ref>
|
||||
(context-ref name)
|
||||
context-ref?
|
||||
(name var-name))
|
||||
|
||||
(define (resolve-context-ref ctx v)
|
||||
(if (context-ref? v)
|
||||
(assoc-ref (context-vars ctx) (var-name v))
|
||||
v))
|
||||
|
||||
(define (resolve-context-refs ctx args)
|
||||
(map (cut resolve-context-ref ctx <>) args))
|
||||
(define-syntax resolve-context-refs
|
||||
(syntax-rules ($)
|
||||
((_ ctx ($ x))
|
||||
(assoc-ref (context-vars ctx) x))
|
||||
((_ ctx (f x ...))
|
||||
(f (resolve-context-refs ctx x) ...))
|
||||
((_ ctx x) x)))
|
||||
|
||||
(define (add-context-triggers! ctx triggers)
|
||||
(when triggers
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue