public static < A , B > B reduce ( final Iterable < A > iterable , final B initial , final Function2 < A , B > func ) { B b = initial ; for ( final A item : iterable ) { b = func . apply ( b , item ) ; } return b ; }
reduces an iterable to a single value starting from an initial value and applying down the iterable .