summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/funcdata/theory/Bifunctor.java
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2020-04-13 18:43:13 -0400
committerBen Culkin <scorpress@gmail.com>2020-04-13 18:43:13 -0400
commitf51f6da7319787348c38b875652b5c0e9f88c8aa (patch)
tree943888fc724da2d2dedd89abec99dcbfcc089fd0 /src/main/java/bjc/funcdata/theory/Bifunctor.java
parent9052ed6da37af23ea82588d248f409e60a33c6cb (diff)
Cleanup pass
Pass to do some cleanups
Diffstat (limited to 'src/main/java/bjc/funcdata/theory/Bifunctor.java')
-rw-r--r--src/main/java/bjc/funcdata/theory/Bifunctor.java92
1 files changed, 49 insertions, 43 deletions
diff --git a/src/main/java/bjc/funcdata/theory/Bifunctor.java b/src/main/java/bjc/funcdata/theory/Bifunctor.java
index b576a2b..72fccff 100644
--- a/src/main/java/bjc/funcdata/theory/Bifunctor.java
+++ b/src/main/java/bjc/funcdata/theory/Bifunctor.java
@@ -8,10 +8,10 @@ import java.util.function.Function;
* @author ben
*
* @param <LeftType>
- * The type stored on the 'left' of the pair.
+ * The type stored on the 'left' of the pair.
*
* @param <RightType>
- * The type stored on the 'right' of the pair.
+ * The type stored on the 'right' of the pair.
*/
public interface Bifunctor<LeftType, RightType> {
/**
@@ -20,16 +20,16 @@ public interface Bifunctor<LeftType, RightType> {
* @author EVE
*
* @param <OldLeft>
- * The old left type.
+ * The old left type.
*
* @param <OldRight>
- * The old right type.
+ * The old right type.
*
* @param <NewLeft>
- * The new left type.
+ * The new left type.
*
* @param <NewRight>
- * The new right type.
+ * The new right type.
*/
public interface BifunctorMap<OldLeft, OldRight, NewLeft, NewRight>
extends Function<Bifunctor<OldLeft, OldRight>, Bifunctor<NewLeft, NewRight>> {
@@ -44,13 +44,13 @@ public interface Bifunctor<LeftType, RightType> {
* @author EVE
*
* @param <OldLeft>
- * The old left type.
+ * The old left type.
*
* @param <OldRight>
- * The old right type.
+ * The old right type.
*
* @param <NewLeft>
- * The new left type.
+ * The new left type.
*/
public interface LeftBifunctorMap<OldLeft, OldRight, NewLeft>
extends BifunctorMap<OldLeft, OldRight, NewLeft, OldRight> {
@@ -65,13 +65,13 @@ public interface Bifunctor<LeftType, RightType> {
* @author EVE
*
* @param <OldLeft>
- * The old left type.
+ * The old left type.
*
* @param <OldRight>
- * The old right type.
+ * The old right type.
*
* @param <NewRight>
- * The new right type.
+ * The new right type.
*/
public interface RightBifunctorMap<OldLeft, OldRight, NewRight>
extends BifunctorMap<OldLeft, OldRight, OldLeft, NewRight> {
@@ -81,40 +81,45 @@ public interface Bifunctor<LeftType, RightType> {
}
/**
- * Lift a pair of functions to a single function that maps over both
- * parts of a pair.
+ * Lift a pair of functions to a single function that maps over both parts of a
+ * pair.
*
* @param <OldLeft>
- * The old left type of the pair.
+ * The old left type of the pair.
*
* @param <OldRight>
- * The old right type of the pair.
+ * The old right type of the pair.
*
* @param <NewLeft>
- * The new left type of the pair.
+ * The new left type of the pair.
*
* @param <NewRight>
- * The new right type of the pair.
+ * The new right type of the pair.
*
* @param leftFunc
- * The function that maps over the left of the pair.
+ * The function that maps over the left of the pair.
*
* @param rightFunc
- * The function that maps over the right of the pair.
+ * The function that maps over the right of the pair.
*
* @return A function that maps over both parts of the pair.
*/
- public default <OldLeft, OldRight, NewLeft, NewRight> BifunctorMap<OldLeft, OldRight, NewLeft, NewRight> bimap(
- final Function<OldLeft, NewLeft> leftFunc, final Function<OldRight, NewRight> rightFunc) {
- final BifunctorMap<OldLeft, OldRight, NewLeft, NewRight> bimappedFunc = (argPair) -> {
- final LeftBifunctorMap<OldLeft, OldRight, NewLeft> leftMapper = argPair.fmapLeft(leftFunc);
+ public default <OldLeft, OldRight, NewLeft, NewRight>
+ BifunctorMap<OldLeft, OldRight, NewLeft, NewRight>
+ bimap(final Function<OldLeft, NewLeft> leftFunc,
+ final Function<OldRight, NewRight> rightFunc) {
+ final BifunctorMap<OldLeft, OldRight, NewLeft, NewRight> bimappedFunc
+ = argPair -> {
+ final LeftBifunctorMap<OldLeft, OldRight, NewLeft> leftMapper
+ = argPair.fmapLeft(leftFunc);
- final Bifunctor<NewLeft, OldRight> leftMappedFunctor = leftMapper.apply(argPair);
- final RightBifunctorMap<NewLeft, OldRight, NewRight> rightMapper = leftMappedFunctor
- .fmapRight(rightFunc);
+ final Bifunctor<NewLeft, OldRight> leftMappedFunctor
+ = leftMapper.apply(argPair);
+ final RightBifunctorMap<NewLeft, OldRight, NewRight> rightMapper
+ = leftMappedFunctor.fmapRight(rightFunc);
- return rightMapper.apply(leftMappedFunctor);
- };
+ return rightMapper.apply(leftMappedFunctor);
+ };
return bimappedFunc;
}
@@ -123,42 +128,43 @@ public interface Bifunctor<LeftType, RightType> {
* Lift a function to operate over the left part of this pair.
*
* @param <OldLeft>
- * The old left type of the pair.
+ * The old left type of the pair.
*
* @param <OldRight>
- * The old right type of the pair.
+ * The old right type of the pair.
*
* @param <NewLeft>
- * The new left type of the pair.
+ * The new left type of the pair.
*
* @param func
- * The function to lift to work over the left side of the pair.
+ * The function to lift to work over the left side of the
+ * pair.
*
* @return The function lifted to work over the left side of bifunctors.
*/
- public <OldLeft, OldRight, NewLeft> LeftBifunctorMap<OldLeft, OldRight, NewLeft> fmapLeft(
- Function<OldLeft, NewLeft> func);
+ public <OldLeft, OldRight, NewLeft> LeftBifunctorMap<OldLeft, OldRight, NewLeft>
+ fmapLeft(Function<OldLeft, NewLeft> func);
/**
* Lift a function to operate over the right part of this pair.
*
* @param <OldLeft>
- * The old left type of the pair.
+ * The old left type of the pair.
*
* @param <OldRight>
- * The old right type of the pair.
+ * The old right type of the pair.
*
* @param <NewRight>
- * The new right type of the pair.
+ * The new right type of the pair.
*
* @param func
- * The function to lift to work over the right side of the pair.
+ * The function to lift to work over the right side of the
+ * pair.
*
- * @return The function lifted to work over the right side of
- * bifunctors.
+ * @return The function lifted to work over the right side of bifunctors.
*/
- public <OldLeft, OldRight, NewRight> RightBifunctorMap<OldLeft, OldRight, NewRight> fmapRight(
- Function<OldRight, NewRight> func);
+ public <OldLeft, OldRight, NewRight> RightBifunctorMap<OldLeft, OldRight, NewRight>
+ fmapRight(Function<OldRight, NewRight> func);
/**
* Get the value contained on the left of this bifunctor.