E.g., to add all the numbers in a list
define addall(list) -> total;
lvars x, total = 0;
for x in list do
x + total -> total
endfor
enddefine;
addall([3 5 7 9]) =>
** 24
We could use the FOR construct to define a procedure like delete. We use a local variable, say `x', to denote successive elements in a list. If the element is not the same as the item to be deleted, then leave the element on the stack. If all this is done inside the list brackets, using `%', then the items left on the stack will be made into a list.
define new_delete(item, list) -> result;
lvars x;
[% for x in list do
unless x = item then x /* left on stack */ endunless;
endfor
%] -> result
enddefine;
new_delete([a b], [[1 2] [3 4] [a b] [c d]]) =>
** [[1 2] [3 4] [c d]]