Conversation
|
Consider our classical rule for handlers: This should evoke the following flows: and nothing more. For now, and this is what this PR attempts to do, we can just unify |
|
Conceptually, I don't think this is ok. Shouldn't For example, if we would allow subtyping in the source (since you argue with flows), Don't get me wrong, I don't like this potentially "cyclic" flow. |
|
Thank you for the concrete example. Consider the following program: Under my proposal this should type check with Not let us consider what happens at runtime. 0: the effect operation is not used: this is fine. You are right and the flows should be: Now the following type checks: With Luckily this is not cyclic. |
Not immediately. The moment the continuation is called (for instance in tail position), it will be cyclic. But maybe that's not a problem per se. |
Fixes #604