I’ve been reading a lot about Reactive Programming (Rx.Net, RxJava, etc.) and I was wondering how this fits in with the models in this book. Is it a new thing, or a variation of an existing model, or… what?
Excellent question, Shaun. We did consider covering Concurrent Functional Reactive Programming using Elm (which isn’t quite the same thing as Microsoft’s Rx, but has more than a little in common) in one of the chapters. There’s a brief note about it in the Wrapping Up chapter.
Thanks for mentioning this - it’s definitely something I should add to the Wrapping Up chapter.
The asynchronous aspects of Rx have similarities with core.async’s inversion of control-based asynchrony (unsurprisingly, as they’re based on .NET’s Async Methods). Rx’s use of streams to communicate between tasks has similarities with Storm’s topologies. And the fact that you can query asynchronous streams using LINQ operators has similarities with Elxir’s use of pattern matching to examine messages in an actor’s mailbox.
So there are definitely significant areas of overlap. But the “flavour” of an Rx application will be rather different from any of the above.