summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/data/Either.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2016-07-28 16:44:36 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2016-07-28 16:44:36 -0400
commitdca8e9f586fd595a7995f07788318fb92b8cce79 (patch)
tree4fdf216d4a30c2c663d4a429f79cfa471c8579c4 /BJC-Utils2/src/main/java/bjc/utils/data/Either.java
parentb1317e5e62bb044cd8a676cb3fc2da86e9922caf (diff)
Format/Cleanup pass
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/Either.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/Either.java89
1 files changed, 44 insertions, 45 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/Either.java b/BJC-Utils2/src/main/java/bjc/utils/data/Either.java
index 8787888..9418882 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/Either.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/Either.java
@@ -15,21 +15,6 @@ import java.util.function.Function;
*/
public class Either<LeftType, RightType>
implements IPair<LeftType, RightType> {
- private LeftType leftVal;
- private RightType rightVal;
-
- private boolean isLeft;
-
- private Either(LeftType left, RightType right) {
- if (left == null) {
- rightVal = right;
- } else {
- leftVal = left;
-
- isLeft = true;
- }
- }
-
/**
* Create a new either with the left value occupied
*
@@ -41,11 +26,10 @@ public class Either<LeftType, RightType>
* The value to put on the left
* @return An either with the left side occupied
*/
- public static <LeftType, RightType> Either<LeftType, RightType>
- fromLeft(LeftType left) {
+ public static <LeftType, RightType> Either<LeftType, RightType> fromLeft(
+ LeftType left) {
return new Either<>(left, null);
}
-
/**
* Create a new either with the right value occupied
*
@@ -57,11 +41,27 @@ public class Either<LeftType, RightType>
* The value to put on the right
* @return An either with the right side occupied
*/
- public static <LeftType, RightType> Either<LeftType, RightType>
- fromRight(RightType right) {
+ public static <LeftType, RightType> Either<LeftType, RightType> fromRight(
+ RightType right) {
return new Either<>(null, right);
}
+ private LeftType leftVal;
+
+ private RightType rightVal;
+
+ private boolean isLeft;
+
+ private Either(LeftType left, RightType right) {
+ if (left == null) {
+ rightVal = right;
+ } else {
+ leftVal = left;
+
+ isLeft = true;
+ }
+ }
+
@Override
public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind(
BiFunction<LeftType, RightType, IPair<BoundLeft, BoundRight>> binder) {
@@ -89,8 +89,26 @@ public class Either<LeftType, RightType>
}
@Override
- public <NewLeft> IPair<NewLeft, RightType>
- mapLeft(Function<LeftType, NewLeft> mapper) {
+ public <OtherLeft, OtherRight, CombinedLeft, CombinedRight> IPair<CombinedLeft, CombinedRight> combine(
+ IPair<OtherLeft, OtherRight> otherPair,
+ BiFunction<LeftType, OtherLeft, CombinedLeft> leftCombiner,
+ BiFunction<RightType, OtherRight, CombinedRight> rightCombiner) {
+ if (isLeft) {
+ return otherPair.bind((otherLeft, otherRight) -> {
+ return new Either<>(leftCombiner.apply(leftVal, otherLeft),
+ null);
+ });
+ }
+
+ return otherPair.bind((otherLeft, otherRight) -> {
+ return new Either<>(null,
+ rightCombiner.apply(rightVal, otherRight));
+ });
+ }
+
+ @Override
+ public <NewLeft> IPair<NewLeft, RightType> mapLeft(
+ Function<LeftType, NewLeft> mapper) {
if (isLeft) {
return new Either<>(mapper.apply(leftVal), null);
}
@@ -99,8 +117,8 @@ public class Either<LeftType, RightType>
}
@Override
- public <NewRight> IPair<LeftType, NewRight>
- mapRight(Function<RightType, NewRight> mapper) {
+ public <NewRight> IPair<LeftType, NewRight> mapRight(
+ Function<RightType, NewRight> mapper) {
if (isLeft) {
return new Either<>(leftVal, null);
}
@@ -109,27 +127,8 @@ public class Either<LeftType, RightType>
}
@Override
- public <MergedType> MergedType
- merge(BiFunction<LeftType, RightType, MergedType> merger) {
+ public <MergedType> MergedType merge(
+ BiFunction<LeftType, RightType, MergedType> merger) {
return merger.apply(leftVal, rightVal);
}
-
- @Override
- public <OtherLeft, OtherRight, CombinedLeft, CombinedRight>
- IPair<CombinedLeft, CombinedRight>
- combine(IPair<OtherLeft, OtherRight> otherPair,
- BiFunction<LeftType, OtherLeft, CombinedLeft> leftCombiner,
- BiFunction<RightType, OtherRight, CombinedRight> rightCombiner) {
- if (isLeft) {
- return otherPair.bind((otherLeft, otherRight) -> {
- return new Either<>(leftCombiner.apply(leftVal, otherLeft),
- null);
- });
- }
-
- return otherPair.bind((otherLeft, otherRight) -> {
- return new Either<>(null,
- rightCombiner.apply(rightVal, otherRight));
- });
- }
}