aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/util/Fold.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-30 14:16:10 +0100
committerMichael Williamson <mike@zwobble.org>2016-03-30 14:16:10 +0100
commiteda05cc1e2f845b4e7c3eeea505c535432240197 (patch)
treec5fadfec89d5c8aee66d8838456dfe695d6c02b0 /src/main/java/org/zwobble/couscous/util/Fold.java
parentdd86a4da8bf2ce24133f6399ede4cd5561d19810 (diff)
Read extended operands in infix operations
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);