Template foldr

Accumulates all elements of a range using a function.

template foldr(F...) ;

foldr takes a function, an input range and the initial value. The function takes this initial value and the first element of the range (in this order), puts them together and returns the result. The return type of the function should be the same as the type of the initial value. This is than repeated for all the remaining elements of the range, whereby the value returned by the passed function is used at the place of the initial value.

foldr accumulates from right to left.

Contained Functions

NameDescription
foldr

Parameters

NameDescription
F Callable accepting the accumulator and a range element.

Example

int[3] range = [1, 2, 3];
int[3] output;
const int[3] expected = [3, 2, 1];

alias f = (acc, x) {
    acc.front = x;
    acc.popFront;
    return acc;
};
const actual = foldr!f(range[], output[]);

assert(output[] == expected[]);