0
votes

There's this thing called Reactive Extensions also called ReactiveX. http://reactivex.io/intro.html

The introduction has this part where it states:

"It is sometimes called “functional reactive programming” but this is a misnomer. ReactiveX may be functional, and it may be reactive, but “functional reactive programming” is a different animal. One main point of difference is that functional reactive programming operates on values that change continuously over time, while ReactiveX operates on discrete values that are emitted over time. (See Conal Elliott’s work for more-precise information on functional reactive programming.)"

Now if I want to understand/write about Reactive Extensions? Does this mean FRP <: Reactive Extensions So Reactive extensions should also cover FRP. Or these two [FRP and ReactiveX] or [Continuous Time and Discrete Time] are two different concepts, should not be treated the same?

2

2 Answers

0
votes

"Functional Reactive Programming" was a term coined (or made popular) by Conal Elliott. He has a precise definition for it (see also What is (functional) reactive programming?). As noted in the help document you referenced, ReactiveX doesn't meet that definition.

Given all of that, there is some overlap between the two.

0
votes

In ReactiveX, time (other than serialized events, i.e., causality) is not relevant, with the specific notion of time dependent on the scheduler. The values are discrete and push-based.

FRP has, by definition, the notion of time. And the values are continuous functions of time. In fact, the simplest behavior in FRP is the identity function.

time :: Behavior Time
at time = id

tl;dr: FRP is a different beast altogether.