summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/funcdata/theory
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-11 13:41:07 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-11 13:41:07 -0300
commit946cab444bc301d8a7c756a1bab039558288de89 (patch)
tree419f27c39a509bcd83cae0e6630be8eb7ff95a30 /base/src/main/java/bjc/utils/funcdata/theory
parentc82e3b3b2de0633317ec8fc85925e91422820597 (diff)
Cleanup work
Diffstat (limited to 'base/src/main/java/bjc/utils/funcdata/theory')
-rw-r--r--base/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java98
-rw-r--r--base/src/main/java/bjc/utils/funcdata/theory/Functor.java28
2 files changed, 84 insertions, 42 deletions
diff --git a/base/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java b/base/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java
index 13c1709..a94a7b5 100644
--- a/base/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java
+++ b/base/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java
@@ -3,14 +3,15 @@ package bjc.utils.funcdata.theory;
import java.util.function.Function;
/**
- * A functor over a pair of heterogeneous types
+ * A functor over a pair of heterogeneous types.
*
* @author ben
+ *
* @param <LeftType>
- * 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 'left' of the pair.
*
+ * @param <RightType>
+ * The type stored on the 'right' of the pair.
*/
public interface Bifunctor<LeftType, RightType> {
/**
@@ -18,10 +19,17 @@ public interface Bifunctor<LeftType, RightType> {
*
* @author EVE
*
- * @param <OldLeft>
+ * @param <OldLeft>
+ * The old left type.
+ *
* @param <OldRight>
+ * The old right type.
+ *
* @param <NewLeft>
+ * The new left type.
+ *
* @param <NewRight>
+ * The new right type.
*/
public interface BifunctorMap<OldLeft, OldRight, NewLeft, NewRight>
extends Function<Bifunctor<OldLeft, OldRight>, Bifunctor<NewLeft, NewRight>> {
@@ -34,8 +42,13 @@ public interface Bifunctor<LeftType, RightType> {
* @author EVE
*
* @param <OldLeft>
+ * The old left type.
+ *
* @param <OldRight>
+ * The old right type.
+ *
* @param <NewLeft>
+ * The new left type.
*/
public interface LeftBifunctorMap<OldLeft, OldRight, NewLeft>
extends BifunctorMap<OldLeft, OldRight, NewLeft, OldRight> {
@@ -48,8 +61,13 @@ public interface Bifunctor<LeftType, RightType> {
* @author EVE
*
* @param <OldLeft>
+ * The old left type.
+ *
* @param <OldRight>
+ * The old right type.
+ *
* @param <NewRight>
+ * The new right type.
*/
public interface RightBifunctorMap<OldLeft, OldRight, NewRight>
extends BifunctorMap<OldLeft, OldRight, OldLeft, NewRight> {
@@ -58,21 +76,28 @@ public interface Bifunctor<LeftType, RightType> {
/**
* Lift a pair of functions to a single function that maps over both
- * parts of a pair
+ * 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
- * @return A function that maps over both parts 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) {
@@ -90,50 +115,61 @@ public interface Bifunctor<LeftType, RightType> {
}
/**
- * Lift a function to operate over the left part of this pair
+ * 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
- * @return The function lifted to work over the left side of bifunctors
+ * 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);
/**
- * Lift a function to operate over the right part of this pair
+ * 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
- * @return The function lifted to work over the right side of bifunctors
+ * 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.
*/
public <OldLeft, OldRight, NewRight> RightBifunctorMap<OldLeft, OldRight, NewRight> fmapRight(
Function<OldRight, NewRight> func);
/**
- * Get the value contained on the left of this bifunctor
+ * Get the value contained on the left of this bifunctor.
*
- * @return The value on the left side of this bifunctor
+ * @return
+ * The value on the left side of this bifunctor.
*/
public LeftType getLeft();
/**
- * Get the value contained on the right of this bifunctor
+ * Get the value contained on the right of this bifunctor.
*
- * @return The value on the right of this bifunctor
+ * @return
+ * The value on the right of this bifunctor.
*/
public RightType getRight();
}
diff --git a/base/src/main/java/bjc/utils/funcdata/theory/Functor.java b/base/src/main/java/bjc/utils/funcdata/theory/Functor.java
index 1c53284..9efa883 100644
--- a/base/src/main/java/bjc/utils/funcdata/theory/Functor.java
+++ b/base/src/main/java/bjc/utils/funcdata/theory/Functor.java
@@ -4,36 +4,42 @@ import java.util.function.Function;
/**
* Represents a container or context some sort usually, but the precise
- * definition is that it represents exactly what it is defined as
+ * definition is that it represents exactly what it is defined as.
*
* @author ben
+ *
* @param <ContainedType>
- * The value inside the functor
+ * The value inside the functor.
*/
public interface Functor<ContainedType> {
/**
- * Converts a normal function to operate over values in a functor.
+ * Converts a normal function to operate over values in a functor..
*
* N.B: Even though the type signature implies that you can apply the
* resulting function to any type of functor, it is only safe to call it
- * on instances of the type of functor you called fmap on.
+ * on instances of the type of functor you called fmap on..
*
* @param <ArgType>
- * The argument of the function
+ * The argument of the function.
+ *
* @param <ReturnType>
- * The return type of the function
+ * The return type of the function.
+ *
* @param func
- * The function to convert
- * @return The passed in function converted to work over a particular
- * type of functors
+ * The function to convert.
+ *
+ * @return
+ * The passed in function converted to work over a particular
+ * type of functors.
*/
public <ArgType, ReturnType> Function<Functor<ArgType>, Functor<ReturnType>> fmap(
Function<ArgType, ReturnType> func);
/**
- * Retrieve the thing inside this functor
+ * Retrieve the thing inside this functor.
*
- * @return The thing inside this functor
+ * @return
+ * The thing inside this functor.
*/
public ContainedType getValue();
}