From fbacbb91961bea3410f457012075aabd91c168c1 Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Sun, 7 Jul 2019 23:06:27 +0200 Subject: [PATCH] Added third factorial example. --- actors.scm | 2 +- testing_factorial3.scm | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 testing_factorial3.scm diff --git a/actors.scm b/actors.scm index 4ae01ed..fa6f1bb 100644 --- a/actors.scm +++ b/actors.scm @@ -1,6 +1,6 @@ (import srfi-69 matchable) -(define trace-enabled #t) +(define trace-enabled #f) ;;; ;;; Actor creation diff --git a/testing_factorial3.scm b/testing_factorial3.scm new file mode 100644 index 0000000..b3450aa --- /dev/null +++ b/testing_factorial3.scm @@ -0,0 +1,25 @@ +(load "actors.scm") + +(define trace-enabled #t) + +(define factorial + (make-actor-with-address + 'factorial + (lambda (self customer n) + (if (= n 0) + (send-message customer 1) + (let ((fact-acc (make-actor + (lambda (self m) + (send-message customer (* n m)) + 'done)))) + (send-message self fact-acc (- n 1)) + 'sleep))))) + +(define println + (make-actor-with-address 'println + (lambda (self . message) + (apply print message) + 'sleep))) + +(send-message factorial println 5) +(run) -- 2.20.1