This document provides an introduction to functional reactive programming (FRP). It discusses key concepts of FRP including working with streams of asynchronous data, manipulating streams using functions like map and filter, and combining multiple streams. It also covers the ReactiveCocoa framework for FRP in iOS and OS X, including how to think in signals that represent events over time rather than mutable state. An example is provided of validating a form by combining streams of name, surname, and email validation.