55a081267cf13cbd0a0ca1503016b827fd69ea68
[actors.git] / test_counter.scm
1 (load "actors.scm")
2
3 (define trace-enabled #t)
4
5 (define ((make-counter-behaviour value) self customer . args)
6   (match args
7     (('get) (send-message customer value) 'sleep)
8     (('inc delta) (make-counter-behaviour (+ value delta)))))
9
10 (define println
11   (make-actor-with-address 'println
12    (lambda (self . message)
13      (apply print message)
14      'sleep)))
15     
16 (define counter0 (make-actor (make-counter-behaviour 0)))
17
18 (send-and-run counter0 println 'get)
19 (send-message counter0 println 'inc 3)
20 (send-message counter0 println 'get)
21 (send-message counter0 println 'inc 2)
22 (send-and-run counter0 println 'get)