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.