Here’s my take on a left fold in Java. Calling it is somewhat verbose, but it does the job of abstracting iteration so you don’t actually have to write another for loop on Iterable as long as you live.
public static <A, B> A fold(F<A, F<B, A>> f, A z, Iterable<B> xs) { A p = z; for (B x : xs) { p = f.f(p).f(x); } return p; }
In case it’s not obvious, F<A, B> is an interface with one method: B f(A a).
Pingback: Right-Fold in Java « Apocalisp
Nice entry,
you’ll find another variant of Left-Fold (in Java) under http://gleichmann.wordpress.com/2008/02/10/blocks-an-alternative-for-closures/
Greetings
Mario
Pingback: FoldLeft, FoldRight « Marco Faustinelli's Blog