Functional reactive programming
FP avoids immutability and side-effects. In some circumstances, the application should react to dynamic value/data changes. For instance, we may need to change the user interface of an iOS application to reflect received data from a backend or database system. How would we do this without states and mutable values?
Imperative programming captures these dynamic values only indirectly, through state and mutations. The complete history (past, present, and future) has no first-class representation. Moreover, only discretely evolving values can be (indirectly) captured, as the imperative paradigm is temporally discrete.
FRP provides a way to handle dynamic value changes while still retaining the FP style. FRP, as its name suggests, is a combination of FP and reactive programming. Reactive programming makes it possible to deal with certain data types that represent values over time. These data types are called time flow or event streams in different FP languages....