56 lines
1.0 KiB
JavaScript
56 lines
1.0 KiB
JavaScript
|
// bin/syndicatec compiler/demo-synthetic-patch-2.js | node
|
||
|
//
|
||
|
// Analogous example to syndicate/racket/syndicate/examples/actor/example-synthetic-patch-2.rkt.
|
||
|
//
|
||
|
// Symptomatic output:
|
||
|
//
|
||
|
// Outer value 4 = 4
|
||
|
// Value 0 = 0
|
||
|
// Value 1 = 1
|
||
|
// Value 2 = 2
|
||
|
// Value 3 = 3
|
||
|
//
|
||
|
// Correct output:
|
||
|
//
|
||
|
// Outer value 4 = 4
|
||
|
// Value 0 = 0
|
||
|
// Value 1 = 1
|
||
|
// Value 2 = 2
|
||
|
// Value 3 = 3
|
||
|
// Value 4 = 4
|
||
|
// Value 5 = 5
|
||
|
|
||
|
var Syndicate = require('./src/main.js');
|
||
|
|
||
|
assertion type mapping(key, value);
|
||
|
assertion type ready();
|
||
|
|
||
|
ground dataspace {
|
||
|
spawn {
|
||
|
field this.ofInterest = 0;
|
||
|
during ready() {
|
||
|
on asserted mapping(this.ofInterest, $v) {
|
||
|
console.log("Value", this.ofInterest, "=", v);
|
||
|
this.ofInterest += 1;
|
||
|
}
|
||
|
}
|
||
|
on asserted mapping(4, $v) {
|
||
|
console.log("Outer value", 4, "=", v);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
spawn {
|
||
|
assert mapping(0, 0);
|
||
|
assert mapping(1, 1);
|
||
|
assert mapping(2, 2);
|
||
|
assert mapping(3, 3);
|
||
|
assert mapping(4, 4);
|
||
|
assert mapping(5, 5);
|
||
|
on start {
|
||
|
react {
|
||
|
assert ready();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|