diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-11 13:41:07 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-11 13:41:07 -0300 |
| commit | 946cab444bc301d8a7c756a1bab039558288de89 (patch) | |
| tree | 419f27c39a509bcd83cae0e6630be8eb7ff95a30 /base/src/main/java/bjc/utils/funcdata/theory | |
| parent | c82e3b3b2de0633317ec8fc85925e91422820597 (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.java | 98 | ||||
| -rw-r--r-- | base/src/main/java/bjc/utils/funcdata/theory/Functor.java | 28 |
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(); } |
