Interface CoProduct7<A, B, C, D, E, F, G, CP7 extends CoProduct7<A,B,C,D,E,F,G,?>>
- Type Parameters:
A- the first possible typeB- the second possible typeC- the third possible typeD- the fourth possible typeE- the fifth possible typeF- the sixth possible typeG- the seventh possible typeCP7- the recursive type of this coproduct (used for embedding)
- All Known Implementing Classes:
Choice7, Choice7._A, Choice7._B, Choice7._C, Choice7._D, Choice7._E, Choice7._F, Choice7._G
- 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 CoProduct7<A, B, C, D, E, F, G, CP7 extends CoProduct7<A,B,C,D,E,F,G,?>>
A generalization of the coproduct of seven types.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionConverge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.diverge()Diverge this coproduct by introducing another possible type that it could represent.default <R> Rembed(Fn1<? super CP7, ? extends R> aFn, Fn1<? super CP7, ? extends R> bFn, Fn1<? super CP7, ? extends R> cFn, Fn1<? super CP7, ? extends R> dFn, Fn1<? super CP7, ? extends R> eFn, Fn1<? super CP7, ? extends R> fFn, Fn1<? super CP7, ? extends R> gFn) Embed this coproduct inside another value; that is, given morphisms from this coproduct toR, apply the appropriate morphism to this coproduct as a whole.<R> Rmatch(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) Type-safe convergence requiring a match against all potential types.project()Project this coproduct onto a product.projectA()Convenience method for projecting this coproduct onto a product and then extracting the first slot value.projectB()Convenience method for projecting this coproduct onto a product and then extracting the second slot value.projectC()Convenience method for projecting this coproduct onto a product and then extracting the third slot value.projectD()Convenience method for projecting this coproduct onto a product and then extracting the fourth slot value.projectE()Convenience method for projecting this coproduct onto a product and then extracting the fifth slot value.projectF()Convenience method for projecting this coproduct onto a product and then extracting the sixth slot value.projectG()Convenience method for projecting this coproduct onto a product and then extracting the seventh slot value.
-
Method Details
-
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) Type-safe convergence requiring a match against all potential types.- Type Parameters:
R- result type- Parameters:
aFn- morphismA -> RbFn- morphismB -> RcFn- morphismC -> RdFn- morphismD -> ReFn- morphismE -> RfFn- morphismF -> RgFn- morphismG -> R- Returns:
- the result of applying the appropriate morphism from whichever type is represented by this coproduct to R
- See Also:
-
diverge
Diverge this coproduct by introducing another possible type that it could represent.- Type Parameters:
H- the additional possible type of this coproduct- Returns:
- a Coproduct8<A, B, C, D, E, F, G, H>
- See Also:
-
converge
default CoProduct6<A, B, C, D, E, F, ? extends CoProduct6<A,B, convergeC, D, E, F, ?>> (Fn1<? super G, ? extends CoProduct6<A, B, C, D, E, F, ?>> convergenceFn) Converge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.- Parameters:
convergenceFn- morphismG ->CoProduct6<A, B, C, D, E, F>- Returns:
- a
CoProduct6<A, B, C, D, E, F>
-
project
-
projectA
-
projectB
-
projectC
-
projectD
-
projectE
-
projectF
-
projectG
-
embed
default <R> R embed(Fn1<? super CP7, ? extends R> aFn, Fn1<? super CP7, ? extends R> bFn, Fn1<? super CP7, ? extends R> cFn, Fn1<? super CP7, ? extends R> dFn, Fn1<? super CP7, ? extends R> eFn, Fn1<? super CP7, ? extends R> fFn, Fn1<? super CP7, ? extends R> gFn) Embed this coproduct inside another value; that is, given morphisms from this coproduct toR, apply the appropriate morphism to this coproduct as a whole. Likematch(Fn1, Fn1, Fn1, Fn1, Fn1, Fn1, Fn1), but without unwrapping the value.- Type Parameters:
R- result type- Parameters:
aFn- morphismA v B v C v D v E v F v G -> R, applied in theAcasebFn- morphismA v B v C v D v E v F v G -> R, applied in theBcasecFn- morphismA v B v C v D v E v F v G -> R, applied in theCcasedFn- morphismA v B v C v D v E v F v G -> R, applied in theDcaseeFn- morphismA v B v C v D v E v F v G -> R, applied in theEcasefFn- morphismA v B v C v D v E v F v G -> R, applied in theFcasegFn- morphismA v B v C v D v E v F v G -> R, applied in theGcase- Returns:
- the result of applying the appropriate morphism to this coproduct
-