a-foundation/src/main/java/com/ajjpj/afoundation/collection/ACollectionHelper.java
public static <T, R, E extends Throwable> R foldLeft (Iterable<T> coll, R startValue, AFunction2<R, ? super T, R, E> f) throws E {
        R result = startValue;

        for (T e: coll) {
            result = f.apply (result, e);
        }

        return result;
    }
public static <T, R, E extends Throwable> R foldLeft (Iterable<T> coll, R startValue, AFunction2<R, ? super T, R, E> f) throws E {
        R result = startValue;

        for (T e: coll) {
            result = f.apply (result, e);
        }

        return result;
    }
public static < T , R , E extends Throwable > R foldLeft ( Iterable < T > coll , R startValue , AFunction2 < R , ? super T , R , E > f ) throws E { R result = startValue ; for ( T e : coll ) { result = f . apply ( result , e ) ; } return result ; }
Applies a binary operator to a start value and all elements of this sequence, going left to right.

@param <T> element type of the collection
@param <R> result type
Applies a binary operator to a start value and all elements of this sequence going left to right .