Go to the Next or Previous section, the Detailed Contents, or the Amiga E Encyclopedia.

### 10.7.3 Lists and quoted expressions

There are several E built-in functions which use lists and quoted expressions in powerful ways. These functions are similar to functional programming constructs and, basically, they allow for very readable code, which otherwise would require iterative algorithms (i.e., loops).

`MapList(address,list,e-list,quoted-exp)`
The address is the address of a variable (e.g., `{x}`), list is a list or E-list (the source), e-list is an E-list variable (the destination), and quoted-exp is the address of an expression which involves the addressed variable (e.g., ``x+2`). The effect of the function is to take, in turn, a value from list, store it at address, evaluate the quoted expression and store the result in the destination list. The resulting list is also returned (for convenience).

For example:

```  MapList({y}, [1,2,3,a,99,1+c], lt, `y*y)
```
results in `lt` taking the value:

```  [1,4,9,a*a,9801,(1+c)*(1+c)]
```
Functional programmers would say that `MapList` mapped the function (the quoted expression) across the (source) list.

`ForAll(address,list,quoted-exp)`
Works just like `MapList` except that the resulting list is not stored. Instead, `ForAll` returns `TRUE` if every element of the resulting list is true (i.e., non-zero), and `FALSE` otherwise. In this way it decides whether the quoted expression is true for all elements of the source list. For example, the following are `TRUE`:

```  ForAll({x}, [1,2,-13,8,0], `x<10)
ForAll({x}, [1,2,-13,8,0], `x<=8)
ForAll({x}, [1,2,-13,8,0], `x>-20)

```
and these are `FALSE`:

```  ForAll({x}, [1,2,-13,8,0], `x OR x)
ForAll({x}, [1,2,-13,8,0], `x=2)
ForAll({x}, [1,2,-13,8,0], `x<>2)

```
`Exists(address,list,quoted-exp)`
Works just like `ForAll` except it returns `TRUE` if the quoted expression is true (i.e., non-zero) for at least one of the source list elements, and `FALSE` otherwise. For example, the following are `TRUE`:

```  Exists({x}, [1,2,-13,8,0], `x<10)
Exists({x}, [1,2,-13,8,0], `x=2)
Exists({x}, [1,2,-13,8,0], `x>0)

```
and these are `FALSE`:

```  Exists({x}, [1,2,-13,8,0], `x<-20)
Exists({x}, [1,2,-13,8,0], `x=4)
Exists({x}, [1,2,-13,8,0], `x>8)

```
`SelectList(address,list,e-list,quoted-exp)`
Works just like `MapList` except the quoted-exp is used to decide which elements from list are copied to e-list. The only elements which are copied are those for which quoted-exp is true (i.e., non-zero). The resulting list is also returned (for convenience).

For example:

```  SelectList({y}, [99,6,1,2,7,1,1,6,6], lt, `y>5)
```
results in `lt` taking the value:

```  [99,6,7,6,6]
```

Go to the Next or Previous section, the Detailed Contents, or the Amiga E Encyclopedia.