That should follow the existing for comprehension translation rules, since the proposed rules are just some addition to existing rules.
That’s exact the approach that has been implemented in Dsl.scala’s ResetEverywhere plugin. It might be a good idea.
I would suggest to use Dsl type class instead of Monad, because Dsl has been proven it works well with Scala type inference, even in complex use cases.
Why do you say that? I think this proposal also addresses while and nested blocks.
I disagree. Virtualized control flow provides the ability of optimization in runtime.