Broke out example into separate file.
[actors.git] / testing_factorial1.scm
diff --git a/testing_factorial1.scm b/testing_factorial1.scm
new file mode 100644 (file)
index 0000000..09aafda
--- /dev/null
@@ -0,0 +1,19 @@
+(load "actors.scm")
+
+(define factorial
+  (make-actor-with-address 'factorial
+   (lambda (self customer . message)
+     (match message
+       ((n) (send-message self customer n 1) 'sleep)
+       ((0 acc) (send-message customer acc) 'sleep)
+       ((n acc) (send-message self customer (- n 1) (* acc n)) '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)