Next: , Previous: loops comprehensions vector, Up: loops comprehensions

#### 47.2.5 Arithmetic accumulator loops

— Syntax: sum-ec ?qualifier ... expression

The sum of all values of expression. Think of it as:

```          (apply + (list-ec ?qualifier ... expression))
```

Examples:

```          (sum-ec                 ;no qualifiers
1)
⇒ 1

(sum-ec (:range i 0)
i)
⇒ 0

(sum-ec (:range i 1)
i)
⇒ 0

(sum-ec (:range i 2)
i)
⇒ 1

(sum-ec (:range i 3)
i)
⇒ 3
```
— Syntax: product-ec ?qualifier ... expression

The product of all values of expression. Think of it as:

```          (apply * (list-ec ?qualifier ... expression))
```

Examples:

```          (product-ec             ;no qualifiers
1)
⇒ 1

(product-ec (:range i 1 0)      ;i from 1 to 1
i)
⇒ 1

(product-ec (:range i 1 1)      ;loop zero times
i)
⇒ 1

(product-ec (:range i 9 9)      ;loop zero times
i)
⇒ 1

(product-ec (:range i 1 2)      ;i from 1 to 1
i)
⇒ 1

(product-ec (:range i 1 3)      ;i from 1 to 2
i)
⇒ 2

(product-ec (:range i 1 4)      ;i from 1 to 3
i)
⇒ 6
```
— Syntax: min-ec ?qualifier ... expression
— Syntax: max-ec ?qualifier ... expression

The minimum and maximum of all values of expression. The sequence of values must be non-empty. Think of these as

```          (apply min (list-ec ?qualifier ... expression))
(apply max (list-ec ?qualifier ... expression))
```

If we want to return a default value in case the sequence is empty we may want to consider:

```          (fold3-ec 'infinity ?qualifier ... expression min min)
```