From c82e3b3b2de0633317ec8fc85925e91422820597 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Sun, 8 Oct 2017 22:39:59 -0300 Subject: Start splitting into maven modules --- .../java/bjc/utils/funcdata/theory/Bifunctor.java | 139 --------------------- .../java/bjc/utils/funcdata/theory/Functor.java | 39 ------ 2 files changed, 178 deletions(-) delete mode 100644 BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java delete mode 100644 BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Functor.java (limited to 'BJC-Utils2/src/main/java/bjc/utils/funcdata/theory') diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java deleted file mode 100644 index 13c1709..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Bifunctor.java +++ /dev/null @@ -1,139 +0,0 @@ -package bjc.utils.funcdata.theory; - -import java.util.function.Function; - -/** - * A functor over a pair of heterogeneous types - * - * @author ben - * @param - * The type stored on the 'left' of the pair - * @param - * The type stored on the 'right' of the pair - * - */ -public interface Bifunctor { - /** - * Alias for functor mapping. - * - * @author EVE - * - * @param - * @param - * @param - * @param - */ - public interface BifunctorMap - extends Function, Bifunctor> { - - } - - /** - * Alias for left functor mapping. - * - * @author EVE - * - * @param - * @param - * @param - */ - public interface LeftBifunctorMap - extends BifunctorMap { - - } - - /** - * Alias for right functor mapping. - * - * @author EVE - * - * @param - * @param - * @param - */ - public interface RightBifunctorMap - extends BifunctorMap { - - } - - /** - * Lift a pair of functions to a single function that maps over both - * parts of a pair - * - * @param - * The old left type of the pair - * @param - * The old right type of the pair - * @param - * The new left type of the pair - * @param - * 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 BifunctorMap bimap( - final Function leftFunc, final Function rightFunc) { - final BifunctorMap bimappedFunc = (argPair) -> { - final LeftBifunctorMap leftMapper = argPair.fmapLeft(leftFunc); - - final Bifunctor leftMappedFunctor = leftMapper.apply(argPair); - final RightBifunctorMap rightMapper = leftMappedFunctor - .fmapRight(rightFunc); - - return rightMapper.apply(leftMappedFunctor); - }; - - return bimappedFunc; - } - - /** - * Lift a function to operate over the left part of this pair - * - * @param - * The old left type of the pair - * @param - * The old right type of the pair - * @param - * 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 LeftBifunctorMap fmapLeft( - Function func); - - /** - * Lift a function to operate over the right part of this pair - * - * @param - * The old left type of the pair - * @param - * The old right type of the pair - * @param - * 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 RightBifunctorMap fmapRight( - Function 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/BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Functor.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Functor.java deleted file mode 100644 index 1c53284..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/theory/Functor.java +++ /dev/null @@ -1,39 +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 - * The value inside the functor - */ -public interface 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. - * - * @param - * The argument of the function - * @param - * 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 Function, Functor> fmap( - Function func); - - /** - * Retrieve the thing inside this functor - * - * @return The thing inside this functor - */ - public ContainedType getValue(); -} -- cgit v1.2.3