X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=8sync%2Fsystems%2Factors.scm;h=270b25f452909e5a000780bd7de5e968d47d63d2;hp=a5033135653422a8c8feb7db452a766fe9288d4c;hb=d3202269c645127c176cad41185fa0f95be34d89;hpb=5099eea71d7271a4237855c7d297195f36251b01 diff --git a/8sync/systems/actors.scm b/8sync/systems/actors.scm index a503313..270b25f 100644 --- a/8sync/systems/actors.scm +++ b/8sync/systems/actors.scm @@ -316,6 +316,12 @@ If key not found and DFLT not provided, throw an error." ;;; Actor utilities ;;; =============== + +(define-syntax-rule (with-message-args (message message-arg ...) + body body* ...) + (let ((message-arg (message-ref message (quote message-arg))) ...) + body body* ...)) + (define-syntax mlambda (syntax-rules () "A lambda for building message handlers. @@ -331,8 +337,7 @@ Which is like doing manually: ((_ (actor message message-arg ...) body body* ...) (lambda (actor message) - (let ((message-arg (message-ref message (quote message-arg))) ...) - body body* ...))))) + (with-message-args (message message-arg ...) body body* ...))))) ;; @@: Sadly, docstrings won't work with this... ;; I think we need to bust out syntax-case to make that happen...