Node:Accumulate, Next:Keep, Previous:Every, Up:Recursive Patterns
Another recursive pattern is called the accumulate
pattern. In
the accumulate
recursive pattern, an action is performed on
every element of a list and the result of that action is accumulated
with the results of performing the action on the other elements.
This is very like the `every' pattern using cons
, except that
cons
is not used, but some other combiner.
The pattern is:
+
or
some other combining function, with
Here is an example:
(defun add-elements (numbers-list) "Add the elements of NUMBERS-LIST together." (if (not numbers-list) 0 (+ (car numbers-list) (add-elements (cdr numbers-list))))) (add-elements '(1 2 3 4)) => 10
See Making a List of Files, for an example of the accumulate pattern.