## Uses of Interface
com.jnape.palatable.lambda.adt.product.Product2

- Packages that use Product2
  Package | Description
  --- | ---
  com.jnape.palatable.lambda.adt.coproduct |
  com.jnape.palatable.lambda.adt.hlist |
  com.jnape.palatable.lambda.adt.product |
  com.jnape.palatable.lambda.functions |
  com.jnape.palatable.lambda.functions.specialized |

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

    Methods in com.jnape.palatable.lambda.adt.coproduct that return Product2
    Modifier and Type | Method and Description
    --- | ---
    `default Product2<Maybe<A>,Maybe<B>>` | CoProduct2.`project()` Project this coproduct onto a product, such that the index in the product that corresponds to this coproduct's value is present, while the other indices are absent.

  - ### Uses of Product2 in com.jnape.palatable.lambda.adt.hlist

    Classes in com.jnape.palatable.lambda.adt.hlist that implement Product2
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Tuple2<_1,_2>` A 2-element tuple product type, implemented as a specialized HList.
    `class` | `Tuple3<_1,_2,_3>` A 3-element tuple product type, implemented as a specialized HList.
    `class` | `Tuple4<_1,_2,_3,_4>` A 4-element tuple product type, implemented as a specialized HList.
    `class` | `Tuple5<_1,_2,_3,_4,_5>` A 5-element tuple product type, implemented as a specialized HList.
    `class` | `Tuple6<_1,_2,_3,_4,_5,_6>` A 6-element tuple product type, implemented as a specialized HList.
    `class` | `Tuple7<_1,_2,_3,_4,_5,_6,_7>` A 7-element tuple product type, implemented as a specialized HList.
    `class` | `Tuple8<_1,_2,_3,_4,_5,_6,_7,_8>` An 8-element tuple product type, implemented as a specialized HList.

  - ### Uses of Product2 in com.jnape.palatable.lambda.adt.product

    Subinterfaces of Product2 in com.jnape.palatable.lambda.adt.product
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `Product3<_1,_2,_3>` A product with three values.
    `interface` | `Product4<_1,_2,_3,_4>` A product with four values.
    `interface` | `Product5<_1,_2,_3,_4,_5>` A product with five values.
    `interface` | `Product6<_1,_2,_3,_4,_5,_6>` A product with six values.
    `interface` | `Product7<_1,_2,_3,_4,_5,_6,_7>` A product with seven values.
    `interface` | `Product8<_1,_2,_3,_4,_5,_6,_7,_8>` A product with eight values.

    Methods in com.jnape.palatable.lambda.adt.product that return Product2
    Modifier and Type | Method and Description
    --- | ---
    `default Product2<_2,_1>` | Product2.`invert()` Rotate the first two slots of this product.
    `static <_1,_2> Product2<_1,_2>` | Product2.`product(_1 _1, _2 _2)` Static factory method for creating a generic `Product2`.

  - ### Uses of Product2 in com.jnape.palatable.lambda.functions

    Methods in com.jnape.palatable.lambda.functions that return types with arguments of type Product2
    Modifier and Type | Method and Description
    --- | ---
    `default Fn4<? super Product2<? extends A,? extends B>,C,D,E,F>` | Fn5.`uncurry()` Returns an `Fn4` that takes the first two arguments as a ``Product2`<A, B>` and the remaining arguments.
    `default Fn7<? super Product2<? extends A,? extends B>,C,D,E,F,G,H,I>` | Fn8.`uncurry()` Returns an `Fn7` that takes the first two arguments as a ``Product2`<A, B>` and the remaining arguments.
    `default Fn3<? super Product2<? extends A,? extends B>,C,D,E>` | Fn4.`uncurry()` Returns an `Fn3` that takes the first two arguments as a ``Product2`<A, B>` and the third and fourth arguments.
    `default Fn1<? super Product2<? extends A,? extends B>,C>` | Fn2.`uncurry()` Returns an `Fn1` that takes the arguments as a ``Product2`<A, B>`.
    `default Fn2<? super Product2<? extends A,? extends B>,C,D>` | Fn3.`uncurry()` Returns an `Fn2` that takes the first two arguments as a ``Product2`<A, B>` and the third argument.
    `default Fn5<? super Product2<? extends A,? extends B>,C,D,E,F,G>` | Fn6.`uncurry()` Returns an `Fn5` that takes the first two arguments as a ``Product2`<A, B>` and the remaining arguments.
    `default Fn6<? super Product2<? extends A,? extends B>,C,D,E,F,G,H>` | Fn7.`uncurry()` Returns an `Fn6` that takes the first two arguments as a ``Product2`<A, B>` and the remaining arguments.

  - ### Uses of Product2 in com.jnape.palatable.lambda.functions.specialized

    Methods in com.jnape.palatable.lambda.functions.specialized that return types with arguments of type Product2
    Modifier and Type | Method and Description
    --- | ---
    `default MonoidFactory<? super Product2<? extends A,? extends B>,C>` | BiMonoidFactory.`uncurry()`
    `default Predicate<? super Product2<? extends A,? extends B>>` | BiPredicate.`uncurry()` Returns an `Fn1` that takes the arguments as a ``Product2`<A, B>`.
    `default SemigroupFactory<? super Product2<? extends A,? extends B>,C>` | BiSemigroupFactory.`uncurry()`