09aafda907a65f5e950e787bb32863c07b8bb866
[actors.git] / testing_factorial1.scm
1 (load "actors.scm")
2
3 (define factorial
4   (make-actor-with-address 'factorial
5    (lambda (self customer . message)
6      (match message
7        ((n) (send-message self customer n 1) 'sleep)
8        ((0 acc) (send-message customer acc) 'sleep)
9        ((n acc) (send-message self customer (- n 1) (* acc n)) 'sleep)))))
10
11 (define println
12   (make-actor-with-address 'println
13    (lambda (self . message)
14      (apply print message)
15      'sleep)))
16
17 (send-message factorial println 5)
18 (send-message factorial println 7)
19 (run)