Stacey, the limitation with SQL, LINQ, et. al. is that they solve the problem of reading data, but not modifying it. If you want to modify the data, you are back to imperative programming. DSL's leave you in a similar situation: if you want to modify complex
data, you end up recreating the control structures of an imperative language. We just don't know of any good alternative yet. I am basically trying to do the same thing for modification that queries did for reads: invent a declarative semantics that has nice
Functional Reactive Programming is indeed an alternative approach, and one that is being actively developed. My reaction has been similar to yours: it just seems very abstract and counter-intuitive to me. The most important thing for me is being easy to
understand and use, because programming is already hard enough. I also think it ends up punting on the hard problem of coordinating the changes from different events that may influence each other via side-effects. But maybe I just don't get it, or they will
eventually work it out.