syndicate-2017/js/compiler/demo-bankaccount.js

37 lines
744 B
JavaScript
Raw Normal View History

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
ground dataspace {
spawn {
field this.balance = 0;
assert account(this.balance);
dataflow {
console.log("Balance inside account is", this.balance);
}
on message deposit($amount) {
this.balance += amount;
2016-03-18 21:00:51 +00:00
}
}
spawn {
on asserted account($balance) {
console.log("Balance is now", balance);
2016-03-18 21:00:51 +00:00
}
}
spawn {
on start {
console.log("Waiting for account.");
}
stop on asserted Syndicate.observe(deposit(_)) {
console.log("Account became ready.");
:: deposit(+100);
:: deposit(-30);
2016-03-18 21:00:51 +00:00
}
}
}