diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-04-17 15:01:44 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-04-17 15:01:44 -0400 |
| commit | 77fcc58d1facffbc3af50be8c05985350e9f1355 (patch) | |
| tree | b7b81d24c107e644924dc526f8bb034efc62d2dc /BJC-Utils2/src/main/java/bjc/utils/data/experimental | |
| parent | a5850915df72f5968fd1b281eb9e455d50c580ee (diff) | |
Code maintenace and changes
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/experimental')
7 files changed, 0 insertions, 928 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/IHolder.java b/BJC-Utils2/src/main/java/bjc/utils/data/experimental/IHolder.java deleted file mode 100644 index 6ccf115..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/IHolder.java +++ /dev/null @@ -1,101 +0,0 @@ -package bjc.utils.data.experimental; - -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.UnaryOperator; - -/** - * A holder of a single value. - * - * @author ben - * - * @param <ContainedType> - * The type of value held - */ -public interface IHolder<ContainedType> { - /** - * Bind a function across the value in this container - * - * @param <BoundType> - * The type of value in this container - * @param binder - * The function to bind to the value - * @return A holder from binding the value - */ - public <BoundType> IHolder<BoundType> bind( - Function<ContainedType, IHolder<BoundType>> binder); - - /** - * Apply an action to the value - * - * @param action - * The action to apply to the value - */ - public default void doWith(Consumer<ContainedType> action) { - transform((value) -> { - action.accept(value); - - return value; - }); - } - - /** - * Get the value contained in this holder without changing it. - * - * @return The value held in this holder - */ - public default ContainedType getValue() { - return unwrap((value) -> value); - } - - /** - * Create a new holder with a mapped version of the value in this - * holder. - * - * Does not change the internal state of this holder - * - * @param <MappedType> - * The type of the mapped value - * @param mapper - * The function to do mapping with - * @return A holder with the mapped value - */ - public <MappedType> IHolder<MappedType> map( - Function<ContainedType, MappedType> mapper); - - /** - * Transform the value held in this holder - * - * @param transformer - * The function to transform the value with - * @return The holder itself, for easy chaining - */ - public IHolder<ContainedType> transform( - UnaryOperator<ContainedType> transformer); - - /** - * Unwrap the value contained in this holder so that it is no longer - * held - * - * @param <UnwrappedType> - * The type of the unwrapped value - * @param unwrapper - * The function to use to unwrap the value - * @return The unwrapped held value - */ - public <UnwrappedType> UnwrappedType unwrap( - Function<ContainedType, UnwrappedType> unwrapper); - - /** - * Replace the held value with a new one - * - * @param newValue - * The value to hold instead - * @return The holder itself - */ - public default IHolder<ContainedType> replace(ContainedType newValue) { - return transform((oldValue) -> { - return newValue; - }); - } -} diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/IPair.java b/BJC-Utils2/src/main/java/bjc/utils/data/experimental/IPair.java deleted file mode 100644 index f5ca240..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/IPair.java +++ /dev/null @@ -1,97 +0,0 @@ -package bjc.utils.data.experimental; - -import java.util.function.BiConsumer; -import java.util.function.BiFunction; -import java.util.function.Function; - -/** - * Represents a pair of values - * - * @author ben - * @param <LeftType> - * The type of the left side of the pair - * @param <RightType> - * The type of the right side of the pair - * - */ -public interface IPair<LeftType, RightType> { - /** - * Bind a function to the left value in this pair - * - * @param <BoundLeft> - * The type of the bound value - * @param leftBinder - * The function to use to bind - * @return A pair with the left type bound - */ - public <BoundLeft> IPair<BoundLeft, RightType> bindLeft( - Function<LeftType, IPair<BoundLeft, RightType>> leftBinder); - - /** - * Bind a function to the right value in this pair - * - * @param <BoundRight> - * The type of the bound value - * @param rightBinder - * The function to use to bind - * @return A pair with the right type bound - */ - public <BoundRight> IPair<LeftType, BoundRight> bindRight( - Function<RightType, IPair<LeftType, BoundRight>> rightBinder); - - /** - * Bind a function across the values in this pair - * - * @param <BoundLeft> - * The type of the bound left - * @param <BoundRight> - * The type of the bound right - * @param binder - * The function to bind with - * @return The bound pair - */ - public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind( - BiFunction<LeftType, RightType, IPair<BoundLeft, BoundRight>> binder); - - /** - * Merge the two values in this pair into a single value - * - * @param <MergedType> - * The type of the single value - * @param merger - * The function to use for merging - * @return The pair, merged into a single value - */ - public <MergedType> MergedType merge( - BiFunction<LeftType, RightType, MergedType> merger); - - /** - * Get the value on the left side of the pair - * - * @return The value on the left side of the pair - */ - public default LeftType getLeft() { - return merge((leftValue, rightValue) -> leftValue); - } - - /** - * Get the value on the right side of the pair - * - * @return The value on the right side of the pair - */ - public default RightType getRight() { - return merge((leftValue, rightValue) -> rightValue); - } - - /** - * Immediately perfom the specified action with the contents of this pair - * @param consumer The action to perform on the pair - */ - public default void doWith(BiConsumer<LeftType, RightType> consumer) { - merge((leftValue, rightValue) -> { - consumer.accept(leftValue, rightValue); - - return null; - }); - } -} diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Identity.java b/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Identity.java deleted file mode 100644 index 1780f2d..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Identity.java +++ /dev/null @@ -1,115 +0,0 @@ -package bjc.utils.data.experimental; - -import java.util.function.Function; -import java.util.function.UnaryOperator; - -/** - * @author ben - * - * @param <ContainedType> - */ -/** - * Simple implementation of IHolder that has no hidden behavior - * - * @author ben - * - * @param <ContainedType> - * The type contained in the holder - */ -public class Identity<ContainedType> implements IHolder<ContainedType> { - private ContainedType heldValue; - - /** - * Create a holder holding null - */ - public Identity() { - heldValue = null; - } - - /** - * Create a holder holding the specified value - * - * @param value - * The value to hold - */ - public Identity(ContainedType value) { - heldValue = value; - } - - @Override - public <BoundType> IHolder<BoundType> bind( - Function<ContainedType, IHolder<BoundType>> binder) { - return binder.apply(heldValue); - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } else if (obj == null) { - return false; - } else if (getClass() != obj.getClass()) { - return false; - } - - Identity<?> other = (Identity<?>) obj; - - if (heldValue == null) { - if (other.heldValue != null) { - return false; - } - } else if (!heldValue.equals(other.heldValue)) { - return false; - } - - return true; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - - int result = 1; - - int fieldHash = (heldValue == null) ? 0 : heldValue.hashCode(); - - result = prime * result + fieldHash; - - return result; - } - - @Override - public <MappedType> IHolder<MappedType> map( - Function<ContainedType, MappedType> mapper) { - return new Identity<>(mapper.apply(heldValue)); - } - - @Override - public String toString() { - return "holding[v=" + heldValue + "]"; - } - - @Override - public IHolder<ContainedType> transform( - UnaryOperator<ContainedType> transformer) { - heldValue = transformer.apply(heldValue); - - return this; - } - - @Override - public <UnwrappedType> UnwrappedType unwrap( - Function<ContainedType, UnwrappedType> unwrapper) { - return unwrapper.apply(heldValue); - } -}
\ No newline at end of file diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Lazy.java b/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Lazy.java deleted file mode 100644 index 0d6fcef..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Lazy.java +++ /dev/null @@ -1,228 +0,0 @@ -package bjc.utils.data.experimental; - -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.function.UnaryOperator; - -import bjc.utils.funcdata.FunctionalList; -import bjc.utils.funcdata.IFunctionalList; - -/** - * A holder that holds a means to create a value, but doesn't actually - * compute the value until it's needed - * - * @author ben - * - * @param <ContainedType> - */ -public class Lazy<ContainedType> implements IHolder<ContainedType> { - private static class BoundLazy<OldType, BoundContainedType> - implements IHolder<BoundContainedType> { - private Supplier<IHolder<OldType>> oldSupplier; - - private Function<OldType, IHolder<BoundContainedType>> binder; - - private IHolder<BoundContainedType> boundHolder; - - private boolean holderBound; - - private IFunctionalList<UnaryOperator<BoundContainedType>> actions = new FunctionalList<>(); - - public BoundLazy(Supplier<IHolder<OldType>> supp, - Function<OldType, IHolder<BoundContainedType>> binder) { - oldSupplier = supp; - this.binder = binder; - } - - @Override - public <BoundType> IHolder<BoundType> bind( - Function<BoundContainedType, IHolder<BoundType>> bindr) { - IFunctionalList<UnaryOperator<BoundContainedType>> pendingActions = new FunctionalList<>(); - - actions.forEach(pendingActions::add); - - Supplier<IHolder<BoundContainedType>> typeSupplier = () -> { - IHolder<BoundContainedType> oldHolder = boundHolder; - - if (!holderBound) { - oldHolder = oldSupplier.get().unwrap(binder); - } - - return pendingActions.reduceAux(oldHolder, - (action, state) -> { - return state.transform(action); - }, (value) -> value); - }; - - return new BoundLazy<>(typeSupplier, bindr); - } - - @Override - public <MappedType> IHolder<MappedType> map( - Function<BoundContainedType, MappedType> mapper) { - IFunctionalList<UnaryOperator<BoundContainedType>> pendingActions = new FunctionalList<>(); - - actions.forEach(pendingActions::add); - - Supplier<MappedType> typeSupplier = () -> { - IHolder<BoundContainedType> oldHolder = boundHolder; - - if (!holderBound) { - oldHolder = oldSupplier.get().unwrap(binder); - } - - return pendingActions.reduceAux(oldHolder.getValue(), - (action, state) -> { - return action.apply(state); - }, (value) -> mapper.apply(value)); - }; - - return new Lazy<>(typeSupplier); - } - - @Override - public IHolder<BoundContainedType> transform( - UnaryOperator<BoundContainedType> transformer) { - actions.add(transformer); - - return this; - } - - @Override - public <UnwrappedType> UnwrappedType unwrap( - Function<BoundContainedType, UnwrappedType> unwrapper) { - if (!holderBound) { - boundHolder = oldSupplier.get().unwrap(binder::apply); - } - - return boundHolder.unwrap(unwrapper); - } - - @Override - public String toString() { - if (holderBound) { - return boundHolder.toString(); - } - - return "(unmaterialized)"; - } - } - - private Supplier<ContainedType> valueSupplier; - - private IFunctionalList<UnaryOperator<ContainedType>> actions = new FunctionalList<>(); - - private boolean valueMaterialized; - - private ContainedType heldValue; - - /** - * Create a new lazy value from the specified seed value - * - * @param value - * The seed value to use - */ - public Lazy(ContainedType value) { - heldValue = value; - - valueMaterialized = true; - } - - /** - * Create a new lazy value from the specified value source - * - * @param supp - * The source of a value to use - */ - public Lazy(Supplier<ContainedType> supp) { - valueSupplier = supp; - - valueMaterialized = false; - } - - private Lazy(Supplier<ContainedType> supp, - IFunctionalList<UnaryOperator<ContainedType>> pendingActions) { - valueSupplier = supp; - - actions = pendingActions; - } - - @Override - public <BoundType> IHolder<BoundType> bind( - Function<ContainedType, IHolder<BoundType>> binder) { - IFunctionalList<UnaryOperator<ContainedType>> pendingActions = new FunctionalList<>(); - - actions.forEach(pendingActions::add); - - Supplier<ContainedType> supplier = () -> { - if (valueMaterialized) { - return heldValue; - } - - return valueSupplier.get(); - }; - - return new BoundLazy<>(() -> { - return new Lazy<>(supplier, pendingActions); - }, binder); - } - - @Override - public <MappedType> IHolder<MappedType> map( - Function<ContainedType, MappedType> mapper) { - IFunctionalList<UnaryOperator<ContainedType>> pendingActions = new FunctionalList<>(); - - actions.forEach(pendingActions::add); - - return new Lazy<>(() -> { - ContainedType currVal = heldValue; - - if (!valueMaterialized) { - currVal = valueSupplier.get(); - } - - return pendingActions.reduceAux(currVal, - UnaryOperator<ContainedType>::apply, - (value) -> mapper.apply(value)); - }); - } - - @Override - public IHolder<ContainedType> transform( - UnaryOperator<ContainedType> transformer) { - actions.add(transformer); - - return this; - } - - @Override - public <UnwrappedType> UnwrappedType unwrap( - Function<ContainedType, UnwrappedType> unwrapper) { - if (!valueMaterialized) { - heldValue = valueSupplier.get(); - - valueMaterialized = true; - } - - actions.forEach((action) -> { - heldValue = action.apply(heldValue); - }); - - actions = new FunctionalList<>(); - - return unwrapper.apply(heldValue); - } - - @Override - public String toString() { - if (valueMaterialized) { - if (actions.isEmpty()) { - return "value[v='" + heldValue + "']"; - } - - return "value[v='" + heldValue + "'] (has pending transforms)"; - } - - return "(unmaterialized)"; - } -} diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/LazyPair.java b/BJC-Utils2/src/main/java/bjc/utils/data/experimental/LazyPair.java deleted file mode 100644 index 04a4b61..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/LazyPair.java +++ /dev/null @@ -1,317 +0,0 @@ -package bjc.utils.data.experimental; - -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Supplier; - -/** - * A lazy implementation of a pair - * - * @author ben - * - * @param <LeftType> - * The type on the left side of the pair - * @param <RightType> - * The type on the right side of the pair - */ -public class LazyPair<LeftType, RightType> - implements IPair<LeftType, RightType> { - private static class HalfBoundLazyPair<OldType, NewLeft, NewRight> - implements IPair<NewLeft, NewRight> { - private Supplier<OldType> oldSupplier; - - private Function<OldType, IPair<NewLeft, NewRight>> binder; - - private IPair<NewLeft, NewRight> boundPair; - private boolean pairBound; - - public HalfBoundLazyPair(Supplier<OldType> oldSupp, - Function<OldType, IPair<NewLeft, NewRight>> bindr) { - oldSupplier = oldSupp; - binder = bindr; - } - - @Override - public <BoundLeft> IPair<BoundLeft, NewRight> bindLeft( - Function<NewLeft, IPair<BoundLeft, NewRight>> leftBinder) { - Supplier<NewLeft> leftSupp = () -> { - IPair<NewLeft, NewRight> newPair = boundPair; - - if (!pairBound) { - newPair = binder.apply(oldSupplier.get()); - } - - return newPair.getLeft(); - }; - - return new HalfBoundLazyPair<>(leftSupp, leftBinder); - } - - @Override - public <BoundRight> IPair<NewLeft, BoundRight> bindRight( - Function<NewRight, IPair<NewLeft, BoundRight>> rightBinder) { - Supplier<NewRight> rightSupp = () -> { - IPair<NewLeft, NewRight> newPair = boundPair; - - if (!pairBound) { - newPair = binder.apply(oldSupplier.get()); - } - - return newPair.getRight(); - }; - - return new HalfBoundLazyPair<>(rightSupp, rightBinder); - } - - @Override - public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind( - BiFunction<NewLeft, NewRight, IPair<BoundLeft, BoundRight>> bindr) { - IHolder<IPair<NewLeft, NewRight>> newPair = new Identity<>( - boundPair); - IHolder<Boolean> newPairMade = new Identity<>(pairBound); - - Supplier<NewLeft> leftSupp = () -> { - if (!newPairMade.getValue()) { - newPair.replace(binder.apply(oldSupplier.get())); - newPairMade.replace(true); - } - - return newPair.unwrap((pair) -> pair.getLeft()); - }; - - Supplier<NewRight> rightSupp = () -> { - if (!newPairMade.getValue()) { - newPair.replace(binder.apply(oldSupplier.get())); - newPairMade.replace(true); - } - - return newPair.unwrap((pair) -> pair.getRight()); - }; - - return new BoundLazyPair<>(leftSupp, rightSupp, bindr); - } - - @Override - public <MergedType> MergedType merge( - BiFunction<NewLeft, NewRight, MergedType> merger) { - if (!pairBound) { - boundPair = binder.apply(oldSupplier.get()); - - pairBound = true; - } - - return boundPair.merge(merger); - } - } - - private static class BoundLazyPair<OldLeft, OldRight, NewLeft, NewRight> - implements IPair<NewLeft, NewRight> { - private Supplier<OldLeft> leftSupplier; - private Supplier<OldRight> rightSupplier; - - private BiFunction<OldLeft, OldRight, IPair<NewLeft, NewRight>> binder; - - private IPair<NewLeft, NewRight> boundPair; - - private boolean pairBound; - - public BoundLazyPair(Supplier<OldLeft> leftSupp, - Supplier<OldRight> rightSupp, - BiFunction<OldLeft, OldRight, IPair<NewLeft, NewRight>> bindr) { - leftSupplier = leftSupp; - rightSupplier = rightSupp; - binder = bindr; - } - - @Override - public <BoundLeft> IPair<BoundLeft, NewRight> bindLeft( - Function<NewLeft, IPair<BoundLeft, NewRight>> leftBinder) { - Supplier<NewLeft> leftSupp = () -> { - IPair<NewLeft, NewRight> newPair = boundPair; - - if (!pairBound) { - newPair = binder.apply(leftSupplier.get(), - rightSupplier.get()); - } - - return newPair.getLeft(); - }; - - return new HalfBoundLazyPair<>(leftSupp, leftBinder); - } - - @Override - public <BoundRight> IPair<NewLeft, BoundRight> bindRight( - Function<NewRight, IPair<NewLeft, BoundRight>> rightBinder) { - Supplier<NewRight> rightSupp = () -> { - IPair<NewLeft, NewRight> newPair = boundPair; - - if (!pairBound) { - newPair = binder.apply(leftSupplier.get(), - rightSupplier.get()); - } - - return newPair.getRight(); - }; - - return new HalfBoundLazyPair<>(rightSupp, rightBinder); - } - - @Override - public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind( - BiFunction<NewLeft, NewRight, IPair<BoundLeft, BoundRight>> bindr) { - IHolder<IPair<NewLeft, NewRight>> newPair = new Identity<>( - boundPair); - IHolder<Boolean> newPairMade = new Identity<>(pairBound); - - return new BoundLazyPair<>(() -> { - if (!newPairMade.getValue()) { - newPair.replace(binder.apply(leftSupplier.get(), - rightSupplier.get())); - - newPairMade.replace(false); - } - - return newPair.unwrap((pair) -> pair.getLeft()); - }, () -> { - if (!newPairMade.getValue()) { - newPair.replace(binder.apply(leftSupplier.get(), - rightSupplier.get())); - - newPairMade.replace(false); - } - - return newPair.unwrap((pair) -> pair.getRight()); - }, bindr); - } - - @Override - public <MergedType> MergedType merge( - BiFunction<NewLeft, NewRight, MergedType> merger) { - if (!pairBound) { - boundPair = binder.apply(leftSupplier.get(), - rightSupplier.get()); - - pairBound = true; - } - - return boundPair.merge(merger); - } - } - - private LeftType leftValue; - private RightType rightValue; - - private Supplier<LeftType> leftSupplier; - private Supplier<RightType> rightSupplier; - - private boolean leftMaterialized; - private boolean rightMaterialized; - - /** - * Create a new lazy pair, using the set value s - * - * @param leftVal - * The value for the left side of the pair - * @param rightVal - * The value for the right side of the pair - */ - public LazyPair(LeftType leftVal, RightType rightVal) { - leftValue = leftVal; - rightValue = rightVal; - - leftMaterialized = true; - rightMaterialized = true; - } - - /** - * Create a new lazy pair from the given value sources - * - * @param leftSupp - * The source for a value on the left side of the pair - * @param rightSupp - * The source for a value on the right side of the pair - */ - public LazyPair(Supplier<LeftType> leftSupp, - Supplier<RightType> rightSupp) { - leftSupplier = leftSupp; - rightSupplier = rightSupp; - - leftMaterialized = false; - rightMaterialized = false; - } - - @Override - public <BoundLeft> IPair<BoundLeft, RightType> bindLeft( - Function<LeftType, IPair<BoundLeft, RightType>> leftBinder) { - Supplier<LeftType> leftSupp = () -> { - if (leftMaterialized) { - return leftValue; - } - - return leftSupplier.get(); - }; - - return new HalfBoundLazyPair<>(leftSupp, leftBinder); - } - - @Override - public <BoundRight> IPair<LeftType, BoundRight> bindRight( - Function<RightType, IPair<LeftType, BoundRight>> rightBinder) { - Supplier<RightType> rightSupp = () -> { - if (rightMaterialized) { - return rightValue; - } - - return rightSupplier.get(); - }; - - return new HalfBoundLazyPair<>(rightSupp, rightBinder); - } - - @Override - public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind( - BiFunction<LeftType, RightType, IPair<BoundLeft, BoundRight>> binder) { - return new BoundLazyPair<>(leftSupplier, rightSupplier, binder); - } - - @Override - public <MergedType> MergedType merge( - BiFunction<LeftType, RightType, MergedType> merger) { - if (!leftMaterialized) { - leftValue = leftSupplier.get(); - - leftMaterialized = true; - } - - if (!rightMaterialized) { - rightValue = rightSupplier.get(); - - rightMaterialized = true; - } - - return merger.apply(leftValue, rightValue); - } - - @Override - public LeftType getLeft() { - if (!leftMaterialized) { - leftValue = leftSupplier.get(); - - leftMaterialized = true; - } - - return leftValue; - } - - @Override - public RightType getRight() { - if (!rightMaterialized) { - rightValue = rightSupplier.get(); - - rightMaterialized = true; - } - - return rightValue; - } -} diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Pair.java b/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Pair.java deleted file mode 100644 index 87378d7..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/Pair.java +++ /dev/null @@ -1,63 +0,0 @@ -package bjc.utils.data.experimental; - -import java.util.function.BiFunction; -import java.util.function.Function; - -/** - * A pair of values, with nothing special about them. - * - * @author ben - * - * @param <LeftType> - * The type of the left value - * @param <RightType> - * The type of the right value - */ -public class Pair<LeftType, RightType> - implements IPair<LeftType, RightType> { - private LeftType leftValue; - private RightType rightValue; - - /** - * Create a new pair with both sides set to null - */ - public Pair() { - } - - /** - * Create a new pair with both sides set to the specified values - * - * @param left - * The value of the left side - * @param right - * The value of the right side - */ - public Pair(LeftType left, RightType right) { - leftValue = left; - rightValue = right; - } - - @Override - public <BoundLeft> IPair<BoundLeft, RightType> bindLeft( - Function<LeftType, IPair<BoundLeft, RightType>> leftBinder) { - return leftBinder.apply(leftValue); - } - - @Override - public <BoundRight> IPair<LeftType, BoundRight> bindRight( - Function<RightType, IPair<LeftType, BoundRight>> rightBinder) { - return rightBinder.apply(rightValue); - } - - @Override - public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind( - BiFunction<LeftType, RightType, IPair<BoundLeft, BoundRight>> binder) { - return binder.apply(leftValue, rightValue); - } - - @Override - public <MergedType> MergedType merge( - BiFunction<LeftType, RightType, MergedType> merger) { - return merger.apply(leftValue, rightValue); - } -}
\ No newline at end of file diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/package-info.java b/BJC-Utils2/src/main/java/bjc/utils/data/experimental/package-info.java deleted file mode 100644 index 72e1007..0000000 --- a/BJC-Utils2/src/main/java/bjc/utils/data/experimental/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Experimental redoing of data structures - * - * @author ben - * - */ -package bjc.utils.data.experimental;
\ No newline at end of file |
