Thanks, lots of interesting thoughts here.
This was a distinction I was trying to get at in my post at The Data-First movement - #7 by Bosmon but I realise I tend to write posts that are far too long with too many different points in them so I should try to condense!
- “Reactive programming” is an older, more fundamental and at the same time more diffuse discipline than FRP and has somewhat been eclipsed by the discussion bubble around the latter
- The cornerstone of FRP was originally the elegant type system around continuous time behaviours, but this has more recently been muddied by various kinds of discrete-time FRP which I think should properly be considered varieties of regular RP
- On the one hand whilst it is fun I don’t consider the continuous time formulation adds something of primary value to typical end-user programs, and on the other hand distracts from issues which I see as crucial, such as the potential for glitches:
- Note that the RP article has a substantial section on glitches whereas the FRP one has none. A competent implementor of an FRP system (as suggested in the in the 2012 Bainomugisha et al Survey on Reactive Programming) will tend to make sure that their system is glitch-free but interestingly will not talk much about this.
To me, the discipline of malleable systems is about making intelligible, visible systems with tractable and stable behaviour, with as few as possible hidden abstractions (sources of “divergence”). So whilst I appreciate the elegance of stack-based concatenative languages, I tend to worry that there might be a requirement for the user of the system to think too much about what is “on the stack” without it necessarily being a relevant part of the visibly executing system - what do you think about this?