# Basic Operators This document explains some of the most common operators used in ReactiveCocoa, and includes examples demonstrating their use. Note that operators in this context refer to functions that transform signals, _not_ custom Swift operators. In other words, these are the composeable primitives provided by ReactiveCocoa for working with signals. Roughly speaking they take the shape of `(Input..., Signal...) -> Signal`. Additionally, this document will use the term "signal" when dealing with concepts that apply to both `Signal` and `SignalProducer`. When the distinction matters the inline code-style will be used. **[Performing side effects with signals](#performing-side-effects-with-signals)** 1. [Observation](#observation) 1. [Injecting effects](#injecting-effects) **[Operator composition](#signal-operator-composition)** 1. [Lifting](#lifting) 1. [Pipe](#pipe) **[Transforming signals](#transforming-signals)** 1. [Mapping](#mapping) 1. [Filtering](#filtering) 1. [Reducing](#reducing) **[Combining signals](#combining-signals)** 1. [Combining latest values](#combining-latest-values) 1. [Zipping](#zipping) **[Flattening producers](#flattening-producers)** 1. [Concatenating](#concatenating) 1. [Merging](#merging) 1. [Switching](#switching) **[Handling errors](#handling-errors)** 1. [Catching errors](#catch) 1. [Mapping errors](#mapping-error) 1. [Retrying](#retrying) ## Performing side effects with signals ### Observation ### Injecting effects ## Operator composition ### Lifting ### Pipe ## Transforming signals ### Mapping ### Filtering ### Reducing ## Combining signals ### Combining latest values ### Zipping ## Flattening producers ### Concatenating ### Merging ### Switching ## Handling errors ### Catching errors ### Mapping errors ### Retrying [Signals]: FrameworkOverview.md#signals [Signal Producers]: FrameworkOverview.md#signal-producers [Observation]: FrameworkOverview.md#observation