## Uses of Interface
com.jnape.palatable.lambda.adt.coproduct.CoProduct2

- Packages that use CoProduct2
  Package | Description
  --- | ---
  com.jnape.palatable.lambda.adt |
  com.jnape.palatable.lambda.adt.choice |
  com.jnape.palatable.lambda.adt.coproduct |
  com.jnape.palatable.lambda.functions.builtin.fn2 |
  com.jnape.palatable.lambda.functions.recursion |
  com.jnape.palatable.lambda.optics |

- - ### Uses of CoProduct2 in com.jnape.palatable.lambda.adt

    Classes in com.jnape.palatable.lambda.adt that implement CoProduct2
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Either<L,R>` The binary tagged union, implemented as a specialized `CoProduct2`.
    `class` | `Maybe<A>` The optional type, representing a potentially absent value.
    `class` | `Try<A>` A `Monad` of the evaluation outcome of an expression that might throw.

  - ### Uses of CoProduct2 in com.jnape.palatable.lambda.adt.choice

    Classes in com.jnape.palatable.lambda.adt.choice that implement CoProduct2
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Choice2<A,B>` Canonical ADT representation of `CoProduct2`.

    Method parameters in com.jnape.palatable.lambda.adt.choice with type arguments of type CoProduct2
    Modifier and Type | Method and Description
    --- | ---
    `Choice2<A,B>` | Choice3.`converge(Fn1<? super C,? extends CoProduct2<A,B,?>> convergenceFn)` Converge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.

  - ### Uses of CoProduct2 in com.jnape.palatable.lambda.adt.coproduct

    Classes in com.jnape.palatable.lambda.adt.coproduct with type parameters of type CoProduct2
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `CoProduct2<A,B,CP2 extends CoProduct2<A,B,?>>` A generalization of the coproduct of two types.

    Methods in com.jnape.palatable.lambda.adt.coproduct that return CoProduct2
    Modifier and Type | Method and Description
    --- | ---
    `default CoProduct2<A,B,? extends CoProduct2<A,B,?>>` | CoProduct3.`converge(Fn1<? super C,? extends CoProduct2<A,B,?>> convergenceFn)` Converge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.
    `default CoProduct2<B,A,? extends CoProduct2<B,A,?>>` | CoProduct2.`invert()` Swap the type parameters.

    Methods in com.jnape.palatable.lambda.adt.coproduct that return types with arguments of type CoProduct2
    Modifier and Type | Method and Description
    --- | ---
    `default CoProduct2<A,B,? extends CoProduct2<A,B,?>>` | CoProduct3.`converge(Fn1<? super C,? extends CoProduct2<A,B,?>> convergenceFn)` Converge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.
    `default CoProduct2<B,A,? extends CoProduct2<B,A,?>>` | CoProduct2.`invert()` Swap the type parameters.

    Method parameters in com.jnape.palatable.lambda.adt.coproduct with type arguments of type CoProduct2
    Modifier and Type | Method and Description
    --- | ---
    `default CoProduct2<A,B,? extends CoProduct2<A,B,?>>` | CoProduct3.`converge(Fn1<? super C,? extends CoProduct2<A,B,?>> convergenceFn)` Converge this coproduct down to a lower order coproduct by mapping the last possible type into an earlier possible type.

  - ### Uses of CoProduct2 in com.jnape.palatable.lambda.functions.builtin.fn2

    Method parameters in com.jnape.palatable.lambda.functions.builtin.fn2 with type arguments of type CoProduct2
    Modifier and Type | Method and Description
    --- | ---
    `Tuple2<Iterable<B>,Iterable<C>>` | Partition.`checkedApply(Fn1<? super A,? extends CoProduct2<B,C,?>> function, Iterable<A> as)`
    `static <A,B,C> Fn1<Iterable<A>,Tuple2<Iterable<B>,Iterable<C>>>` | Partition.`partition(Fn1<? super A,? extends CoProduct2<B,C,?>> function)`
    `static <A,B,C> Tuple2<Iterable<B>,Iterable<C>>` | Partition.`partition(Fn1<? super A,? extends CoProduct2<B,C,?>> function, Iterable<A> as)`

  - ### Uses of CoProduct2 in com.jnape.palatable.lambda.functions.recursion

    Classes in com.jnape.palatable.lambda.functions.recursion that implement CoProduct2
    Modifier and Type | Class and Description
    --- | ---
    `class` | `RecursiveResult<A,B>` Specialized `CoProduct2` representing the possible results of a primitive recursive function.

  - ### Uses of CoProduct2 in com.jnape.palatable.lambda.optics

    Method parameters in com.jnape.palatable.lambda.optics with type arguments of type CoProduct2
    Modifier and Type | Method and Description
    --- | ---
    `static <S,T,A,B> Prism<S,T,A,B>` | Prism.`prism(Fn1<? super S,? extends CoProduct2<T,A,?>> sta, Fn1<? super B,? extends T> bt)` Static factory method for creating a `Prism` given a mapping from `S -> `Either`<T, A>` and a mapping from `B -> T`.