-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: Infinitesimal delays #27
Comments
Unfortunately, infinitesimal delays are a huge can of worms. Main problem: Executable modelThe main problem is that I don't have a model that supports recursion properly. I mean, the model Finding a working model for infinitesimal delays looks like a more elaborate research topic to me, and probably not something that can be solved in a github issue. UnionA very desirable property of the primitive
holds, where
Unfortunately, the delays introduced in your proposed version of |
Main problem: Executable modelWell, I did have some ideas about fitting infinitesimal delays into a similar model to the current one, but of course it's perfectly possible (even likely) they my ideas have been tried before and shown to not work. UnionHmm — this is ugly, but I'm not sure it is that big a deal, since the "error" in timings is infinitesimal. |
Main problem: Executable modelIf you come up with something, I'm happy to hear it, of course. :) I just wanted to clarify what I think the core problem is and why it's difficult. UnionThe effect on the example from the previous thread would be that the following two event streams are no longer equivalent
They can be distinguished by taking snapshots with behaviors, as that would be the point of infinitesimal delays. So, it's probably not a good idea to bake delays into the |
Another problem is that it isn't clear to me what should happen if two simultaneous events are separately delayed. Does that mean that both of those events appear simultaneously an instant later, or does it mean that they each get their own instant? |
Also, the discussion illustrates why if we are going to bake delays into a |
Main problem: Executable modelI'll try and come up with a concrete model implementation and see how it goes :) UnionHmm. I agree they're no longer equivalent, but I'm not sure it would cause problems in practice. One of the most compelling things about delays to me are that they allow Delaying multiple eventsThe intention is that if a and b occur simultaneously, then a = (t,x) : ...
b = (t,y) : ...
delay a = (t+ε,x) : ...
delay b = (t+ε,y) : ... So Naming of delaying
|
The thing is, it really isn't obvious to me that introducing delays really is The Right Thing in the majority of cases and therefore the best way to give I do see your point, though, that it is hard to envision a model where |
Well, that's why this proposal exists: to flesh out the cases for and against delays and what effects they have :)
I think this might be misleading; the proposal is to change the semantics, and laws are part of the semantics. It doesn't break anything, it just changes what does and doesn't hold. There's trade-offs involved in any semantic change. |
Actually, I would consider that to be a very separate discussion from whether it makes sense to bake delays into
Yes, but the reason why such laws are being brought up is because they are arguably the intuitive way that a standard |
I no longer believe that delays are the solution, so I'm closing this issue. |
Splitting this off from issue #25 to stop derailing it :)
The proposal
The basic idea is to add a combinator
We define its semantics by adding an infinitesimal element ε to
Time
and implementingdelay
as follows:We can then give a more natural definition for
union
, avoiding the problems of simultaneous events (as discussed in issue #25):and perhaps other combinators (
stepper
?).Advantages
The complications of simultaneous occurrences can be eliminated without sacrificing the "compositionality" that
union
offers is retained.— @gcross
Problems
Time
seems simple to me.)The text was updated successfully, but these errors were encountered: