Interface CoProduct8<A,​B,​C,​D,​E,​F,​G,​H,​CP8 extends CoProduct8<A,​B,​C,​D,​E,​F,​G,​H,​?>>

  • Type Parameters:
    A - the first possible type
    B - the second possible type
    C - the third possible type
    D - the fourth possible type
    E - the fifth possible type
    F - the sixth possible type
    G - the seventh possible type
    H - the eighth possible type
    CP8 - the recursive type of this coproduct (used for embedding)
    All Known Implementing Classes:
    Choice8, Choice8._A, Choice8._B, Choice8._C, Choice8._D, Choice8._E, Choice8._F, Choice8._G, Choice8._H
    Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @FunctionalInterface
    public interface CoProduct8<A,​B,​C,​D,​E,​F,​G,​H,​CP8 extends CoProduct8<A,​B,​C,​D,​E,​F,​G,​H,​?>>
    A generalization of the coproduct of eight types.
    See Also:
    CoProduct2
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      default CoProduct7<A,​B,​C,​D,​E,​F,​G,​? extends CoProduct7<A,​B,​C,​D,​E,​F,​G,​?>> converge​(Fn1<? super H,​? extends CoProduct7<A,​B,​C,​D,​E,​F,​G,​?>> convergenceFn)
      Converge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.
      default <R> R embed​(Fn1<? super CP8,​? extends R> aFn, Fn1<? super CP8,​? extends R> bFn, Fn1<? super CP8,​? extends R> cFn, Fn1<? super CP8,​? extends R> dFn, Fn1<? super CP8,​? extends R> eFn, Fn1<? super CP8,​? extends R> fFn, Fn1<? super CP8,​? extends R> gFn, Fn1<? super CP8,​? extends R> hFn)
      Embed this coproduct inside another value; that is, given morphisms from this coproduct to R, apply the appropriate morphism to this coproduct as a whole.
      <R> R match​(Fn1<? super A,​? extends R> aFn, Fn1<? super B,​? extends R> bFn, Fn1<? super C,​? extends R> cFn, Fn1<? super D,​? extends R> dFn, Fn1<? super E,​? extends R> eFn, Fn1<? super F,​? extends R> fFn, Fn1<? super G,​? extends R> gFn, Fn1<? super H,​? extends R> hFn)
      Type-safe convergence requiring a match against all potential types.
      default Product8<Maybe<A>,​Maybe<B>,​Maybe<C>,​Maybe<D>,​Maybe<E>,​Maybe<F>,​Maybe<G>,​Maybe<H>> project()
      Project this coproduct onto a product.
      default Maybe<A> projectA()
      Convenience method for projecting this coproduct onto a product and then extracting the first slot value.
      default Maybe<B> projectB()
      Convenience method for projecting this coproduct onto a product and then extracting the second slot value.
      default Maybe<C> projectC()
      Convenience method for projecting this coproduct onto a product and then extracting the third slot value.
      default Maybe<D> projectD()
      Convenience method for projecting this coproduct onto a product and then extracting the fourth slot value.
      default Maybe<E> projectE()
      Convenience method for projecting this coproduct onto a product and then extracting the fifth slot value.
      default Maybe<F> projectF()
      Convenience method for projecting this coproduct onto a product and then extracting the sixth slot value.
      default Maybe<G> projectG()
      Convenience method for projecting this coproduct onto a product and then extracting the seventh slot value.
      default Maybe<H> projectH()
      Convenience method for projecting this coproduct onto a product and then extracting the eighth slot value.
    • Method Detail

      • match

        <R> R match​(Fn1<? super A,​? extends R> aFn,
                    Fn1<? super B,​? extends R> bFn,
                    Fn1<? super C,​? extends R> cFn,
                    Fn1<? super D,​? extends R> dFn,
                    Fn1<? super E,​? extends R> eFn,
                    Fn1<? super F,​? extends R> fFn,
                    Fn1<? super G,​? extends R> gFn,
                    Fn1<? super H,​? extends R> hFn)
        Type-safe convergence requiring a match against all potential types.
        Type Parameters:
        R - result type
        Parameters:
        aFn - morphism A -> R
        bFn - morphism B -> R
        cFn - morphism C -> R
        dFn - morphism D -> R
        eFn - morphism E -> R
        fFn - morphism F -> R
        gFn - morphism G -> R
        hFn - morphism H -> R
        Returns:
        the result of applying the appropriate morphism from whichever type is represented by this coproduct to R
        See Also:
        CoProduct2.match(Fn1, Fn1)
      • converge

        default CoProduct7<A,​B,​C,​D,​E,​F,​G,​? extends CoProduct7<A,​B,​C,​D,​E,​F,​G,​?>> converge​(Fn1<? super H,​? extends CoProduct7<A,​B,​C,​D,​E,​F,​G,​?>> convergenceFn)
        Converge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.
        Parameters:
        convergenceFn - morphism G -> CoProduct6<A, B, C, D, E, F, G>
        Returns:
        a CoProduct7<A, B, C, D, E, F, G>
      • projectA

        default Maybe<A> projectA()
        Convenience method for projecting this coproduct onto a product and then extracting the first slot value.
        Returns:
        an optional value representing the projection of the "a" type index
      • projectB

        default Maybe<B> projectB()
        Convenience method for projecting this coproduct onto a product and then extracting the second slot value.
        Returns:
        an optional value representing the projection of the "b" type index
      • projectC

        default Maybe<C> projectC()
        Convenience method for projecting this coproduct onto a product and then extracting the third slot value.
        Returns:
        an optional value representing the projection of the "c" type index
      • projectD

        default Maybe<D> projectD()
        Convenience method for projecting this coproduct onto a product and then extracting the fourth slot value.
        Returns:
        an optional value representing the projection of the "d" type index
      • projectE

        default Maybe<E> projectE()
        Convenience method for projecting this coproduct onto a product and then extracting the fifth slot value.
        Returns:
        an optional value representing the projection of the "e" type index
      • projectF

        default Maybe<F> projectF()
        Convenience method for projecting this coproduct onto a product and then extracting the sixth slot value.
        Returns:
        an optional value representing the projection of the "f" type index
      • projectG

        default Maybe<G> projectG()
        Convenience method for projecting this coproduct onto a product and then extracting the seventh slot value.
        Returns:
        an optional value representing the projection of the "g" type index
      • projectH

        default Maybe<H> projectH()
        Convenience method for projecting this coproduct onto a product and then extracting the eighth slot value.
        Returns:
        an optional value representing the projection of the "h" type index