Next: Other Clauses, Previous: Iteration Clauses, Up: Loop Facility

#### 5.7.5 Accumulation Clauses

These clauses cause the loop to accumulate information about the specified Lisp form. The accumulated result is returned from the loop unless overridden, say, by a `return` clause.

`collect` form
  This clause collects the values of form into a list. Several examples of `collect` appear elsewhere in this manual.

  The word `collecting` is a synonym for `collect`, and likewise for the other accumulation clauses.

`append` form
  This clause collects lists of values into a result list using `append`.
`nconc` form
  This clause collects lists of values into a result list by destructively modifying the lists rather than copying them.
`concat` form
  This clause concatenates the values of the specified form into a string. (It and the following clause are extensions to standard Common Lisp.)
`vconcat` form
  This clause concatenates the values of the specified form into a vector.
`count` form
  This clause counts the number of times the specified form evaluates to a non-`nil` value.
`sum` form
  This clause accumulates the sum of the values of the specified form, which must evaluate to a number.
`maximize` form
  This clause accumulates the maximum value of the specified form, which must evaluate to a number. The return value is undefined if `maximize` is executed zero times.
`minimize` form
  This clause accumulates the minimum value of the specified form.

Accumulation clauses can be followed by ‘`into var`’ to cause the data to be collected into variable var (which is automatically `let`-bound during the loop) rather than an unnamed temporary variable. Also, `into` accumulations do not automatically imply a return value. The loop must use some explicit mechanism, such as `finally return`, to return the accumulated result.

It is valid for several accumulation clauses of the same type to accumulate into the same place. From Steele:

         (loop for name in '(fred sue alice joe june)
               for kids in '((bob ken) () () (kris sunshine) ())
               collect name
               append kids)
              ⇒ (fred bob ken sue alice joe kris sunshine june)