What's hard to understand about it? It's just
x = initial
for y in collection:
x = f(y, x) x = initial
for y in collection:
x = f(y, x)So in effect, as some other commenter said, it's just the loop with worse syntax.