aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/util/Fold.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/util/Fold.java')
-rw-r--r--src/main/java/org/zwobble/couscous/util/Fold.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/util/Fold.java b/src/main/java/org/zwobble/couscous/util/Fold.java
index e86454e..bda680d 100644
--- a/src/main/java/org/zwobble/couscous/util/Fold.java
+++ b/src/main/java/org/zwobble/couscous/util/Fold.java
@@ -2,6 +2,7 @@ package org.zwobble.couscous.util;
import com.google.common.collect.Lists;
+import java.util.Iterator;
import java.util.List;
import java.util.function.BiFunction;
@@ -13,6 +14,14 @@ public class Fold {
}
return value;
}
+ public static <T> T foldLeft(Iterable<T> iterable, BiFunction<T, T, T> function) {
+ Iterator<T> iterator = iterable.iterator();
+ T value = iterator.next();
+ while (iterator.hasNext()) {
+ value = function.apply(value, iterator.next());
+ }
+ return value;
+ }
public static <T, V> V foldRight(List<T> iterable, V initialValue, BiFunction<V, T, V> function) {
return foldLeft(Lists.reverse(iterable), initialValue, function);