aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-13 21:23:01 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-13 21:23:01 +0000
commit9d5cdb693089e98165f9e361fe3db795fc45cc33 (patch)
treeae7688e150510e7b9d9308c3ed1b6da6bd0a954c /src/main/java/org/zwobble
parent816e375ae7c5f33cf1006ea838809159684559ac (diff)
Add foldRight
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java5
-rw-r--r--src/main/java/org/zwobble/couscous/util/Fold.java7
2 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
index 3ef8a0f..0b53784 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
@@ -1,6 +1,5 @@
package org.zwobble.couscous.frontends.java;
-import com.google.common.collect.Lists;
import org.eclipse.jdt.core.dom.*;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.sugar.SwitchCaseNode;
@@ -23,7 +22,7 @@ import static org.zwobble.couscous.ast.sugar.SwitchCaseNode.switchCase;
import static org.zwobble.couscous.frontends.java.JavaExpressionReader.coerceExpression;
import static org.zwobble.couscous.frontends.java.JavaTypes.typeOf;
import static org.zwobble.couscous.util.ExtraLists.*;
-import static org.zwobble.couscous.util.Fold.foldLeft;
+import static org.zwobble.couscous.util.Fold.foldRight;
import static org.zwobble.couscous.util.Tails.tail;
import static org.zwobble.couscous.util.Tails.tails;
import static org.zwobble.couscous.util.UpToAndIncludingIterable.upToAndIncluding;
@@ -117,7 +116,7 @@ class JavaStatementReader {
return cons(
switchValueAssignment,
- foldLeft(Lists.reverse(cases), handleDefault, (handle, currentCase) ->
+ foldRight(cases, handleDefault, (handle, currentCase) ->
currentCase.getValue()
.map(value -> list(ifStatement(
methodCall(
diff --git a/src/main/java/org/zwobble/couscous/util/Fold.java b/src/main/java/org/zwobble/couscous/util/Fold.java
index 85622ed..e86454e 100644
--- a/src/main/java/org/zwobble/couscous/util/Fold.java
+++ b/src/main/java/org/zwobble/couscous/util/Fold.java
@@ -1,5 +1,8 @@
package org.zwobble.couscous.util;
+import com.google.common.collect.Lists;
+
+import java.util.List;
import java.util.function.BiFunction;
public class Fold {
@@ -10,4 +13,8 @@ public class Fold {
}
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);
+ }
}