2016-03-21 01:01:17 +00:00
|
|
|
// bin/syndicatec compiler/demo-bankaccount.js | node
|
2016-03-18 21:00:51 +00:00
|
|
|
|
|
|
|
var Syndicate = require('./src/main.js');
|
|
|
|
|
|
|
|
assertion type account(balance);
|
2016-05-12 01:05:40 +00:00
|
|
|
message type deposit(amount);
|
2016-03-18 21:00:51 +00:00
|
|
|
|
2016-04-07 07:42:54 +00:00
|
|
|
ground dataspace {
|
2016-03-18 21:00:51 +00:00
|
|
|
actor {
|
|
|
|
this.balance = 0;
|
|
|
|
|
2016-05-10 22:49:12 +00:00
|
|
|
react {
|
2016-03-18 21:00:51 +00:00
|
|
|
assert account(this.balance);
|
|
|
|
on message deposit($amount) {
|
|
|
|
this.balance += amount;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
actor {
|
2016-05-10 22:49:12 +00:00
|
|
|
react {
|
2016-03-18 21:00:51 +00:00
|
|
|
on asserted account($balance) {
|
|
|
|
console.log("Balance is now", balance);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
actor {
|
2016-05-10 22:49:12 +00:00
|
|
|
react {
|
|
|
|
do {
|
2016-03-18 21:13:52 +00:00
|
|
|
console.log("Waiting for account.");
|
|
|
|
}
|
2016-05-10 22:49:12 +00:00
|
|
|
finally {
|
2016-03-18 21:13:52 +00:00
|
|
|
console.log("Account became ready.");
|
|
|
|
}
|
|
|
|
} until {
|
2016-03-18 21:00:51 +00:00
|
|
|
case asserted Syndicate.observe(deposit(_)) {
|
|
|
|
:: deposit(+100);
|
|
|
|
:: deposit(-30);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|