Do you feel that you've lost anything in terms of composeability as compared to a more stream/combinator-oriented approach, like, say, Flapjax? If so, have you found that painful in the real world, or do you think it's more of an academic concern with little meaningful impact?
Good question - the reason why we built the library this way was exactly because we find declaring expressions to be more natural than wiring together streams by combinators—which, BTW, Flapjax does support. Far from academic-without-impact, Leo's work was actually directly influential on me—esp. since he worked in PL and I didn't, so much of my initial exposure to reactive programming came from a few projects including his.