Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This example program is intended to support an argument I made many months ago that we should implement the simplest possible policy for resolving conflicts between events, with the expectation that more complicated policies can be implemented in library reactors if they are needed.
The problem of conflicting writes to the same port at the same logical time has been compared with the problem of conflicting events scheduled in logical actions. Although ports and logical actions have different implementations, I regard them as "basically the same thing" in the sense that they are nodes in the reaction graph that can be active or inactive, and that thereby determine the activity of reactions that they trigger.
I have argued to uniform use of a simple "overwrite" policy for both situations. In this example, the alternative "defer" policy is implemented inside of a reactor. The example runs correctly using a recent version of the LF compiler.