diff options
| author | Ben Culkin <scorpress@gmail.com> | 2020-04-12 13:11:11 -0400 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2020-04-12 13:11:11 -0400 |
| commit | 3819027f642df549622c478331391ad3a25a9c4f (patch) | |
| tree | b1bec757c149bf3f82ce9658e71f30c300d419f6 /base/src/main/java/bjc/utils/funcdata/theory | |
| parent | 780a3da69b66921fb7bf7b5779fb44830bb45ddc (diff) | |
Finish esodata extraction
Finished extracting the old version of esodata, and fixed all the local
issues
Diffstat (limited to 'base/src/main/java/bjc/utils/funcdata/theory')
| -rw-r--r-- | base/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java | 176 | ||||
| -rw-r--r-- | base/src/main/java/bjc/utils/funcdata/theory/Functor.java | 43 |
2 files changed, 0 insertions, 219 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 deleted file mode 100644 index 64e6b8f..0000000 --- a/base/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java +++ /dev/null @@ -1,176 +0,0 @@ -package bjc.utils.funcdata.theory; - -import java.util.function.Function; - -/** - * 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. - */ -public interface Bifunctor<LeftType, RightType> { - /** - * Alias for functor mapping. - * - * @author EVE - * - * @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>> { - /* - * Alias - */ - } - - /** - * Alias for left functor mapping. - * - * @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> { - /* - * Alias - */ - } - - /** - * Alias for right functor mapping. - * - * @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> { - /* - * Alias - */ - } - - /** - * 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. - * - * @param <OldRight> - * The old right type of the pair. - * - * @param <NewLeft> - * The new left type of the pair. - * - * @param <NewRight> - * The new right type of the pair. - * - * @param leftFunc - * 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. - */ - 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); - - return rightMapper.apply(leftMappedFunctor); - }; - - return bimappedFunc; - } - - /** - * Lift a function to operate over the left part of this pair. - * - * @param <OldLeft> - * The old left type of the pair. - * - * @param <OldRight> - * The old right type of the pair. - * - * @param <NewLeft> - * 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. - */ - 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. - * - * @param <OldRight> - * The old right type of the pair. - * - * @param <NewRight> - * 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. - */ - public <OldLeft, OldRight, NewRight> RightBifunctorMap<OldLeft, OldRight, NewRight> fmapRight( - Function<OldRight, NewRight> func); - - /** - * Get the value contained on the left 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. - * - * @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 deleted file mode 100644 index 13852e6..0000000 --- a/base/src/main/java/bjc/utils/funcdata/theory/Functor.java +++ /dev/null @@ -1,43 +0,0 @@ -package bjc.utils.funcdata.theory; - -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. - * - * @author ben - * - * @param <ContainedType> - * The value inside the functor. - */ -public interface Functor<ContainedType> { - /** - * 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.. - * - * @param <ArgType> - * The argument of the function. - * - * @param <ReturnType> - * 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. - */ - public <ArgType, ReturnType> Function<Functor<ArgType>, Functor<ReturnType>> fmap( - Function<ArgType, ReturnType> func); - - /** - * Retrieve the thing inside this functor. - * - * @return The thing inside this functor. - */ - public ContainedType getValue(); -} |
