Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Clarify the differences between Functional Reactive Programming and Reactive Extensions #130
The general level of confusion about the differences (that are huge) between Reactive Extensions and Functional Reactive Programming is big.
I found many talks/presentation about Functional Reactive Programming where the topic is about Reactive Extensions and the Rx world in general, this is just a source of general confusion.
Example: one of the most watched talks on Youtube about RxJava is titled "Functional Reactive Programming with RxJava".
I would suggest to add a small paragraph to explain why they are different in the Introduction section, just to make things clear, what's your opinion about it?
We used to have a section on the old RxJava wiki that read:
"We sometimes call this approach Functional Reactive Programming because it
I didn't add any mentions of FRP when I restructured the documentation on
On Wed, Jul 22, 2015 at 7:46 AM, Junior B. firstname.lastname@example.org wrote:
David M. Gross
Let's keep "FRP" for what it really stands for in honor of it's inventor (http://conal.net/talks/). Rx is not FRP and was explicitly designed as a discrete collection API on purpose (as opposed to continuous time varying values).
(Rx is also not functional programming either according to some https://queue.acm.org/detail.cfm?id=2611829. Lambdas in Java are just (sweet) syntactic sugar for anonymous inner classes and do not suddenly morph Java into a completely different beast. And with the introduction of back pressure, Rx is not not even truly reactive anymore according to the letter of the law. But those are different topics).
Plug your ears with wax to not get distracted by the siren song of buzzwords, it does not really matter in the end as long as the library provides the features you need to do your job. Just keep hacking on real world problems using Rx!
I can't say I am opposed to the fact that what matters is the final result I can achieve with a library during my daily work, at the end of the day is what it makes the difference.
On the other side I think that just this line could save newcomers from a hard day in googling about FRP when discovering Rx for the first time:
The initial misconception is very common and drives newcomers into searching about Rx.NET, RxJava, RxJs, RxSwift, etc... as a Functional Reactive Programming implementation, ending reading about Behaviours/Signals and Events (like on ReactiveCocoa or Elm), but then discovering Observer, Observables, Subscriptions (or Disposables) instead of the expected former definitions. I think a single line can save a lot of troubles, but as I said before, this is just a personal opinion.