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.map(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.