I thought you were inventing functional reactive programming, but then I saw it was relational. But I think, due to the relational aspect, you end up achieving the same thing. Anyone interested in this should also look at Jonathan Edwards paper, Coherent Reaction http://coherence-lang.org/Onward09.pdf which takes a similar look at separating control, but achieves it in a more imperative looking language.