Rip supports a variety of interfaces for iterating over collections.

```language-rip numbers = 1..5 double = -> (n) { n + n } ```
Setup code
```language-rip result = System.List.map(double, numbers) ```
Functional Syntax
```language-rip result = numbers.select(double) ```
Object Oriented Syntax
```language-rip result = numbers |> System.List.map(double) ```
Pipeline Syntax
```language-rip result = from n in numbers select n + n ```
SQL Syntax

Regardless of how any result above gets created, it will be a System.Pipeline object. Pipelines have many advantages, not the least is their ability to be lazy-evaluated. Pipelines are not restricted to iterating over collections; any value may be passed through.