X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=8sync%2Fsystems%2Factors.scm;h=a5033135653422a8c8feb7db452a766fe9288d4c;hp=8c4258d725267b189d91c86142f7a62f08e6da4f;hb=5099eea71d7271a4237855c7d297195f36251b01;hpb=e84d276e3217089a18f1edd4ebdb944341c3271b diff --git a/8sync/systems/actors.scm b/8sync/systems/actors.scm index 8c4258d..a503313 100644 --- a/8sync/systems/actors.scm +++ b/8sync/systems/actors.scm @@ -47,7 +47,7 @@ actor-id-hive actor-id-string - mlambda + mlambda define-mhandler make-action-dispatch define-simple-actor @@ -334,6 +334,14 @@ Which is like doing manually: (let ((message-arg (message-ref message (quote message-arg))) ...) body body* ...))))) +;; @@: Sadly, docstrings won't work with this... +;; I think we need to bust out syntax-case to make that happen... +(define-syntax-rule (define-mhandler (name actor message message-arg ...) + body ...) + (define name + (mlambda (actor message message-arg ...) + body ...))) + (define (simple-dispatcher action-map) (lambda (actor message) (let* ((action (message-action message))