From 89a29ed508c0ab3d5eafdf81ed9f8957906381c8 Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Sun, 7 Jul 2019 22:02:14 +0200 Subject: [PATCH] Added second example using actors to capture state. --- testing_factorial2.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 testing_factorial2.scm diff --git a/testing_factorial2.scm b/testing_factorial2.scm new file mode 100644 index 0000000..58e4c5c --- /dev/null +++ b/testing_factorial2.scm @@ -0,0 +1,22 @@ +(load "actors.scm") + +(define factorial + (make-actor-with-address 'factorial + (lambda (self customer n) + (let ((fact_svc (make-actor + (lambda (self n acc) + (cond + ((> n 0) (send-message self (- n 1) (* acc n)) 'sleep) + (else (send-message customer acc) 'done)))))) + (send-message fact_svc n 1) + 'sleep)))) + +(define println + (make-actor-with-address 'println + (lambda (self . message) + (apply print message) + 'sleep))) + +(send-message factorial println 5) +(send-message factorial println 7) +(run) -- 2.20.1