diff --git a/modules/ordo/task.scm b/modules/ordo/task.scm index 4e2529f..60c3619 100644 --- a/modules/ordo/task.scm +++ b/modules/ordo/task.scm @@ -20,9 +20,18 @@ (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 (conn ctx) + (action conn ctx (assoc-ref ctx arg) ...)) + kwarg ...)))) + (define (run-task conn ctx task) (match task (($ description action register triggers)