Added counter (become) example.
[actors.git] / test_counter.scm
diff --git a/test_counter.scm b/test_counter.scm
new file mode 100644 (file)
index 0000000..55a0812
--- /dev/null
@@ -0,0 +1,22 @@
+(load "actors.scm")
+
+(define trace-enabled #t)
+
+(define ((make-counter-behaviour value) self customer . args)
+  (match args
+    (('get) (send-message customer value) 'sleep)
+    (('inc delta) (make-counter-behaviour (+ value delta)))))
+
+(define println
+  (make-actor-with-address 'println
+   (lambda (self . message)
+     (apply print message)
+     'sleep)))
+    
+(define counter0 (make-actor (make-counter-behaviour 0)))
+
+(send-and-run counter0 println 'get)
+(send-message counter0 println 'inc 3)
+(send-message counter0 println 'get)
+(send-message counter0 println 'inc 2)
+(send-and-run counter0 println 'get)