The document discusses functional reactive programming (FRP). It begins by explaining the differences between imperative programming using mutable state and functional programming using immutable values and pure functions. It then defines FRP as combining functional programming techniques like map, filter and reduce with implicit handling of asynchronous data over time. The rest of the document provides examples of FRP libraries for different platforms like RxJava for Android and RxSwift for iOS, and discusses related concepts like hot and cold signals, disposables and reactive app architecture patterns.