summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/funcdata/theory
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2020-04-12 13:11:11 -0400
committerBen Culkin <scorpress@gmail.com>2020-04-12 13:11:11 -0400
commit3819027f642df549622c478331391ad3a25a9c4f (patch)
treeb1bec757c149bf3f82ce9658e71f30c300d419f6 /base/src/main/java/bjc/utils/funcdata/theory
parent780a3da69b66921fb7bf7b5779fb44830bb45ddc (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.java176
-rw-r--r--base/src/main/java/bjc/utils/funcdata/theory/Functor.java43
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();
-}