Next: append - appending - nconc - nconcing, Up: Value Accumulation [Contents][Index]
collect expr [into var] collecting expr [into var]
During each iteration, these constructs collect the value of the specified expression into a list.
varis set to the list of collected values. When iteration terminates, the list
is returned, except if var is specified, the loop does not return the final
list automatically.
If var is not specified, it is equivalent to specifying an internal name
for var and returning its value in a ‘finally’ clause.
The var argument is bound as if by the construct ‘with’.
You cannot specify a data type for var; it must be of type ‘list’.
;;; Collect all the symbols in a list.
(loop for i in '(bird 3 4 turtle (1 . 4) horse cat)
when (symbolp i) collect i)
;;; Collect and return odd numbers.
(loop for i from 1 to 10n
if (oddp i) collect i)
;;; Collect items into local variable, but don't return them.
(loop for i in '(a b c d) by #'cddr
collect i into my-list
finally (print my-list)) ;Prints 1 line