When the user fires the "plus" button, the input command signal changes to a Plus-One command object. The behavior, upon noticing this, will output the increased-by-one value in its output data signal. This data signal is connected to a write behavior for the storage, that will write the new value.
To prevent timing-related errors, I'm including ETags, or rather versions, in all signals. This allows, e.g. to differentiate two different Plus-One command arriving in sequence.
First, we could simply include a timestamp with our ETAG, and reject votes that are too "old" according to the timestamp. Then we could use a frame-buffering mechanism, such that our state is partitioned into multiple sets and we record votes into an appropriate set based on timestamp. The oldest 'frames' are summarized by accumulating cardinality of votes, allowing us to gradually forget the specific set of tags. This design might allow temporary undo for recent votes.
--
You received this message because you are subscribed to the Google Groups "reactive-demand" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reactive-demand+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Alternatively, in a term rewriting language, a button could correspond to a thunk that is applied inline upon pressing. In this case, pressing a button would delete the button, but might create a new button in its place due to fixpoint behavior. This appeals to my "code as material" view - injecting an event can literally change the code.
Anyhow, I've drifted a bit but I feel you're underestimating the utility and generality of recording a history of input. I recommend you grasp the most general approaches before specializing and optimizing for more trivial states.
I'm not sure I see the benefit of the voting idea. It quickly breaks down for similar widget types, such as a checkbox.On Thu, Jan 18, 2018 at 6:17 PM, David Barbour <dmba...@gmail.com> wrote:On Thu, Jan 18, 2018 at 11:48 AM, David Barbour <dmba...@gmail.com> wrote:First, we could simply include a timestamp with our ETAG, and reject votes that are too "old" according to the timestamp. Then we could use a frame-buffering mechanism, such that our state is partitioned into multiple sets and we record votes into an appropriate set based on timestamp. The oldest 'frames' are summarized by accumulating cardinality of votes, allowing us to gradually forget the specific set of tags. This design might allow temporary undo for recent votes.Also, this doesn't necessarily need to be a "time" stamp. It could instead be some form of unforgeable FrameID provided on demand, or perhaps a behavior referencing a subordinate resource to which we can apply the vote demand (via dynamic behaviors). Either of these could give us some extra capability security and allow more precise control of timeouts.
--
You received this message because you are subscribed to the Google Groups "reactive-demand" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reactive-dema...@googlegroups.com.
--Manuel Simoni, Software Engineering Consultant
msi...@gmail.com | Tel: +43 (0)664 346 5158 | Skype: manuelsimoni
--
You received this message because you are subscribed to the Google Groups "reactive-demand" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reactive-dema...@googlegroups.com.