Try to make context vars nestable in task action args

This commit is contained in:
Ray Miller 2025-01-06 20:49:42 +00:00
parent b7e4b9dc74
commit f2f88ce0dc
3 changed files with 19 additions and 29 deletions

View file

@ -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