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 * The type of the left value * @param * The type of the right value */ public class Pair implements IPair { 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 IPair bindLeft( Function> leftBinder) { return leftBinder.apply(leftValue); } @Override public IPair bindRight( Function> rightBinder) { return rightBinder.apply(rightValue); } @Override public IPair bind( BiFunction> binder) { return binder.apply(leftValue, rightValue); } @Override public MergedType merge( BiFunction merger) { return merger.apply(leftValue, rightValue); } }