18 lines
493 B
Racket
18 lines
493 B
Racket
#lang syndicate/actor
|
|
;; Hello-worldish "bank account" example.
|
|
|
|
(struct account (balance) #:prefab)
|
|
(struct deposit (amount) #:prefab)
|
|
|
|
(spawn (field [balance 0])
|
|
(assert (account (balance)))
|
|
(on (message (deposit $amount))
|
|
(balance (+ (balance) amount))))
|
|
|
|
(spawn (on (asserted (account $balance))
|
|
(printf "Balance changed to ~a\n" balance)))
|
|
|
|
(spawn* (until (asserted (observe (deposit _))))
|
|
(send! (deposit +100))
|
|
(send! (deposit -30)))
|