FRP is a reactive programming paradigm that uses functional programming building blocks. It models UI components as streams/observables and uses pure functions as operators to process and propagate change between these streams. State is represented using subjects that emit new stream values in response to events rather than mutable variables. Higher order operators like map and switchMap allow streams of streams to be processed, with switchMap useful for modeling asynchronous operations like HTTP requests. The learning curve for FRP takes effort but pays off in declarative, reactive programs.