From 25959ffced5eb4e239610e79f05c1774e54ec29c Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Mon, 29 Feb 2016 09:16:54 -0500 Subject: Refactored Pair interface Pair now has a proper functional interface --- BJC-Utils2/src/main/java/bjc/utils/data/Pair.java | 9 +++++-- .../main/java/bjc/utils/gen/WeightedGrammar.java | 31 ++++++++++++++-------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java b/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java index 11ce79c..5bd9d63 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java +++ b/BJC-Utils2/src/main/java/bjc/utils/data/Pair.java @@ -1,5 +1,6 @@ package bjc.utils.data; +import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Function; @@ -17,12 +18,12 @@ public class Pair { /** * The left value of the pair */ - public L l; + private L l; /** * The right value of the pair */ - public R r; + private R r; /** * Create a new pair that holds two nulls. @@ -70,4 +71,8 @@ public class Pair { public E merge(BiFunction bf) { return bf.apply(l, r); } + + public void doWith(BiConsumer bc) { + bc.accept(l, r); + } } diff --git a/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java b/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java index de1e7b8..7c3ea6a 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java +++ b/BJC-Utils2/src/main/java/bjc/utils/gen/WeightedGrammar.java @@ -247,15 +247,16 @@ public class WeightedGrammar { FunctionalList>> newResults = new FunctionalList<>(); rule.getValues().forEach((par) -> { - FunctionalList nl = par.r.clone(); + FunctionalList nl = par + .merge((left, right) -> right.clone()); nl.prepend(prefixToken); - newResults.add(new Pair<>(par.l + addProb, nl)); + newResults.add(new Pair<>( + par.merge((left, right) -> left) + addProb, nl)); }); - newResults.forEach((par) -> { - addCase(rName, par.l, par.r); - }); + newResults.forEach((par) -> par + .doWith((left, right) -> addCase(rName, left, right))); } /** @@ -281,7 +282,8 @@ public class WeightedGrammar { // TODO bugtest this. if it works, write multiSuffixWith for (int i = 1; i <= nTimes; i++) { - FunctionalList nl = par.r.clone(); + FunctionalList nl = par + .merge((left, right) -> right.clone()); for (int j = 1; j <= i; j++) { nl.prepend(prefixToken); @@ -291,12 +293,15 @@ public class WeightedGrammar { } nls.forEach((ls) -> { - newResults.add(new Pair<>(par.l + addProb, ls)); + newResults.add(new Pair<>( + par.merge((left, right) -> left) + addProb, ls)); }); }); newResults.forEach((par) -> { - addCase(rName, par.l, par.r); + par.doWith((left, right) -> { + addCase(rName, left, right); + }); }); } @@ -363,14 +368,18 @@ public class WeightedGrammar { FunctionalList>> newResults = new FunctionalList<>(); rule.getValues().forEach((par) -> { - FunctionalList nl = par.r.clone(); + FunctionalList nl = par + .merge((left, right) -> right.clone()); nl.add(prefixToken); - newResults.add(new Pair<>(par.l + addProb, nl)); + newResults.add(new Pair<>( + par.merge((left, right) -> left) + addProb, nl)); }); newResults.forEach((par) -> { - addCase(rName, par.l, par.r); + par.doWith((left, right) -> { + addCase(rName, left, right); + }); }); } -- cgit v1.2.3