Support for context vars without macros

This commit is contained in:
Ray Miller 2025-01-07 18:09:10 +00:00
parent af16ee29b6
commit b4cdfc341a
Signed by: ray
GPG key ID: 043F786C4CD681B8
7 changed files with 91 additions and 94 deletions

View file

@ -20,23 +20,14 @@
(register task-register)
(triggers task-triggers))
(define* (task% description action #:key (register #f) (triggers '()))
(define* (task description action #:key (register #f) (triggers '()))
(make-task description action register triggers))
(define-syntax task
(syntax-rules ()
((_ description (action arg ...) kwarg ...)
(task%
description
(lambda (ctx)
(action (resolve-context-refs ctx arg) ...))
kwarg ...))))
(define (run-task conn ctx t)
(define (run-task ctx t)
(match t
(($ <task> description action register triggers)
(format #t "RUNNING TASK ~a~%" description)
(let ((result ((action ctx) conn)))
(let ((result (action ctx)))
(when register
(register-context-var! ctx register result))
(when triggers