diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-02-29 09:16:54 -0500 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-02-29 09:16:54 -0500 |
| commit | 25959ffced5eb4e239610e79f05c1774e54ec29c (patch) | |
| tree | 81acd44d4d8ae3b2bbaba977ab8133cc4c657efb /BJC-Utils2/src | |
| parent | a3a95154666eb0fbae948173d13ad72c5509b1c4 (diff) | |
Refactored Pair interface
Pair now has a proper functional interface
Diffstat (limited to 'BJC-Utils2/src')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/data/Pair.java | 9 | ||||
| -rw-r--r-- | BJC-Utils2/src/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<L, R> { /** * 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<L, R> { public <E> E merge(BiFunction<L, R, E> bf) { return bf.apply(l, r); } + + public void doWith(BiConsumer<L, R> 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<E> { FunctionalList<Pair<Integer, FunctionalList<E>>> newResults = new FunctionalList<>(); rule.getValues().forEach((par) -> { - FunctionalList<E> nl = par.r.clone(); + FunctionalList<E> 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<E> { // TODO bugtest this. if it works, write multiSuffixWith for (int i = 1; i <= nTimes; i++) { - FunctionalList<E> nl = par.r.clone(); + FunctionalList<E> nl = par + .merge((left, right) -> right.clone()); for (int j = 1; j <= i; j++) { nl.prepend(prefixToken); @@ -291,12 +293,15 @@ public class WeightedGrammar<E> { } 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<E> { FunctionalList<Pair<Integer, FunctionalList<E>>> newResults = new FunctionalList<>(); rule.getValues().forEach((par) -> { - FunctionalList<E> nl = par.r.clone(); + FunctionalList<E> 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); + }); }); } |
