diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-30 14:16:10 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-30 14:16:10 +0100 |
| commit | eda05cc1e2f845b4e7c3eeea505c535432240197 (patch) | |
| tree | c5fadfec89d5c8aee66d8838456dfe695d6c02b0 /src/main/java/org/zwobble/couscous/util/Fold.java | |
| parent | dd86a4da8bf2ce24133f6399ede4cd5561d19810 (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.java | 9 |
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); |
