com.jnape.palatable.lambda.adt.product

## Interface Product8<_1,_2,_3,_4,_5,_6,_7,_8>

- Type Parameters:
    `_1` - The first element type
    `_2` - The second element type
    `_3` - The third element type
    `_4` - The fourth element type
    `_5` - The fifth element type
    `_6` - The sixth element type
    `_7` - The seventh element type
    `_8` - The eighth element type
  All Superinterfaces:
    Map.Entry<_1,_2>, Product2<_1,_2>, Product3<_1,_2,_3>, Product4<_1,_2,_3,_4>, Product5<_1,_2,_3,_4,_5>, Product6<_1,_2,_3,_4,_5,_6>, Product7<_1,_2,_3,_4,_5,_6,_7>
  All Known Implementing Classes:
    Tuple8

      public interface Product8<_1,_2,_3,_4,_5,_6,_7,_8>
      extends Product7<_1,_2,_3,_4,_5,_6,_7>

  A product with eight values.
  See Also:
    `Product2`, `Tuple8`

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `_8` | `_8()` Retrieve the eighth element.
    `default <R> R` | `into(Fn8<? super _1,? super _2,? super _3,? super _4,? super _5,? super _6,? super _7,? super _8,? extends R> fn)` Destructure and apply this product to a function accepting the same number of arguments as this product's slots.
    `default Product8<_2,_1,_3,_4,_5,_6,_7,_8>` | `invert()` Rotate the first two slots of this product.
    `static <_1,_2,_3,_4,_5,_6,_7,_8> Product8<_1,_2,_3,_4,_5,_6,_7,_8>` | `product(_1 _1, _2 _2, _3 _3, _4 _4, _5 _5, _6 _6, _7 _7, _8 _8)` Static factory method for creating a generic `Product8`.
    `default Product8<_2,_3,_1,_4,_5,_6,_7,_8>` | `rotateL3()` Rotate the first three values of this product one slot to the left.
    `default Product8<_2,_3,_4,_1,_5,_6,_7,_8>` | `rotateL4()` Rotate the first four values of this product one slot to the left.
    `default Product8<_2,_3,_4,_5,_1,_6,_7,_8>` | `rotateL5()` Rotate the first five values of this product one slot to the left.
    `default Product8<_2,_3,_4,_5,_6,_1,_7,_8>` | `rotateL6()` Rotate the first six values of this product one slot to the left.
    `default Product8<_2,_3,_4,_5,_6,_7,_1,_8>` | `rotateL7()` Rotate the first seven values of this product one slot to the left.
    `default Product8<_2,_3,_4,_5,_6,_7,_8,_1>` | `rotateL8()` Rotate all eight values of this product one slot to the left.
    `default Product8<_3,_1,_2,_4,_5,_6,_7,_8>` | `rotateR3()` Rotate the first three values of this product one slot to the right.
    `default Product8<_4,_1,_2,_3,_5,_6,_7,_8>` | `rotateR4()` Rotate the first four values of this product one slot to the right.
    `default Product8<_5,_1,_2,_3,_4,_6,_7,_8>` | `rotateR5()` Rotate the first five values of this product one slot to the right.
    `default Product8<_6,_1,_2,_3,_4,_5,_7,_8>` | `rotateR6()` Rotate the first six values of this product one slot to the right.
    `default Product8<_7,_1,_2,_3,_4,_5,_6,_8>` | `rotateR7()` Rotate the first seven values of this product one slot to the right.
    `default Product8<_8,_1,_2,_3,_4,_5,_6,_7>` | `rotateR8()` Rotate all eight values of this product one slot to the right.

    - ### Methods inherited from interface com.jnape.palatable.lambda.adt.product.Product7

      `_7, into, product`

    - ### Methods inherited from interface com.jnape.palatable.lambda.adt.product.Product6

      `_6, into, product`

    - ### Methods inherited from interface com.jnape.palatable.lambda.adt.product.Product5

      `_5, into, product`

    - ### Methods inherited from interface com.jnape.palatable.lambda.adt.product.Product4

      `_4, into, product`

    - ### Methods inherited from interface com.jnape.palatable.lambda.adt.product.Product3

      `_3, into, product`

    - ### Methods inherited from interface com.jnape.palatable.lambda.adt.product.Product2

      `_1, _2, getKey, getValue, into, product, setValue`

    - ### Methods inherited from interface java.util.Map.Entry

      `comparingByKey, comparingByKey, comparingByValue, comparingByValue, equals, hashCode`

- - ### Method Detail

    - #### _8

          _8 _8()

      Retrieve the eighth element.
      Returns:
        the eighth element

    - #### into

          default <R> R into(Fn8<? super _1,? super _2,? super _3,? super _4,? super _5,? super _6,? super _7,? super _8,? extends R> fn)

      Destructure and apply this product to a function accepting the same number of arguments as this product's slots. This can be thought of as a kind of dual to uncurrying a function and applying a product to it.
      Type Parameters:
        `R` - the return type of the function
      Parameters:
        `fn` - the function to apply
      Returns:
        the result of applying the destructured product to the function

    - #### rotateL8

          default Product8<_2,_3,_4,_5,_6,_7,_8,_1> rotateL8()

      Rotate all eight values of this product one slot to the left.
      Returns:
        the left-rotated product

    - #### rotateR8

          default Product8<_8,_1,_2,_3,_4,_5,_6,_7> rotateR8()

      Rotate all eight values of this product one slot to the right.
      Returns:
        the right-rotated product

    - #### rotateL7

          default Product8<_2,_3,_4,_5,_6,_7,_1,_8> rotateL7()

      Description copied from interface: `Product7`
      Rotate the first seven values of this product one slot to the left.
      Specified by:
        `rotateL7` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the left-rotated product

    - #### rotateR7

          default Product8<_7,_1,_2,_3,_4,_5,_6,_8> rotateR7()

      Description copied from interface: `Product7`
      Rotate the first seven values of this product one slot to the right.
      Specified by:
        `rotateR7` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the right-rotated product

    - #### rotateL6

          default Product8<_2,_3,_4,_5,_6,_1,_7,_8> rotateL6()

      Description copied from interface: `Product6`
      Rotate the first six values of this product one slot to the left.
      Specified by:
        `rotateL6` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateL6` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the left-rotated product

    - #### rotateR6

          default Product8<_6,_1,_2,_3,_4,_5,_7,_8> rotateR6()

      Description copied from interface: `Product6`
      Rotate the first six values of this product one slot to the right.
      Specified by:
        `rotateR6` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateR6` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the right-rotated product

    - #### rotateL5

          default Product8<_2,_3,_4,_5,_1,_6,_7,_8> rotateL5()

      Description copied from interface: `Product5`
      Rotate the first five values of this product one slot to the left.
      Specified by:
        `rotateL5` in interface `Product5<_1,_2,_3,_4,_5>`
      Specified by:
        `rotateL5` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateL5` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the left-rotated product

    - #### rotateR5

          default Product8<_5,_1,_2,_3,_4,_6,_7,_8> rotateR5()

      Description copied from interface: `Product5`
      Rotate the first five values of this product one slot to the right.
      Specified by:
        `rotateR5` in interface `Product5<_1,_2,_3,_4,_5>`
      Specified by:
        `rotateR5` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateR5` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the right-rotated product

    - #### rotateL4

          default Product8<_2,_3,_4,_1,_5,_6,_7,_8> rotateL4()

      Description copied from interface: `Product4`
      Rotate the first four values of this product one slot to the left.
      Specified by:
        `rotateL4` in interface `Product4<_1,_2,_3,_4>`
      Specified by:
        `rotateL4` in interface `Product5<_1,_2,_3,_4,_5>`
      Specified by:
        `rotateL4` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateL4` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the left-rotated product

    - #### rotateR4

          default Product8<_4,_1,_2,_3,_5,_6,_7,_8> rotateR4()

      Description copied from interface: `Product4`
      Rotate the first four values of this product one slot to the right.
      Specified by:
        `rotateR4` in interface `Product4<_1,_2,_3,_4>`
      Specified by:
        `rotateR4` in interface `Product5<_1,_2,_3,_4,_5>`
      Specified by:
        `rotateR4` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateR4` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the right-rotated product

    - #### rotateL3

          default Product8<_2,_3,_1,_4,_5,_6,_7,_8> rotateL3()

      Description copied from interface: `Product3`
      Rotate the first three values of this product one slot to the left.
      Specified by:
        `rotateL3` in interface `Product3<_1,_2,_3>`
      Specified by:
        `rotateL3` in interface `Product4<_1,_2,_3,_4>`
      Specified by:
        `rotateL3` in interface `Product5<_1,_2,_3,_4,_5>`
      Specified by:
        `rotateL3` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateL3` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the left-rotated product

    - #### rotateR3

          default Product8<_3,_1,_2,_4,_5,_6,_7,_8> rotateR3()

      Description copied from interface: `Product3`
      Rotate the first three values of this product one slot to the right.
      Specified by:
        `rotateR3` in interface `Product3<_1,_2,_3>`
      Specified by:
        `rotateR3` in interface `Product4<_1,_2,_3,_4>`
      Specified by:
        `rotateR3` in interface `Product5<_1,_2,_3,_4,_5>`
      Specified by:
        `rotateR3` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `rotateR3` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the right-rotated product

    - #### invert

          default Product8<_2,_1,_3,_4,_5,_6,_7,_8> invert()

      Description copied from interface: `Product2`
      Rotate the first two slots of this product.
      Specified by:
        `invert` in interface `Product2<_1,_2>`
      Specified by:
        `invert` in interface `Product3<_1,_2,_3>`
      Specified by:
        `invert` in interface `Product4<_1,_2,_3,_4>`
      Specified by:
        `invert` in interface `Product5<_1,_2,_3,_4,_5>`
      Specified by:
        `invert` in interface `Product6<_1,_2,_3,_4,_5,_6>`
      Specified by:
        `invert` in interface `Product7<_1,_2,_3,_4,_5,_6,_7>`
      Returns:
        the rotated product

    - #### product

          static <_1,_2,_3,_4,_5,_6,_7,_8> Product8<_1,_2,_3,_4,_5,_6,_7,_8> product(_1 _1,
                                                                                     _2 _2,
                                                                                     _3 _3,
                                                                                     _4 _4,
                                                                                     _5 _5,
                                                                                     _6 _6,
                                                                                     _7 _7,
                                                                                     _8 _8)

      Static factory method for creating a generic `Product8`.
      Type Parameters:
        `_1` - the first slot type
        `_2` - the second slot type
        `_3` - the third slot type
        `_4` - the fourth slot type
        `_5` - the fifth slot type
        `_6` - the sixth slot type
        `_7` - the seventh slot type
        `_8` - the eighth slot type
      Parameters:
        `_1` - the first slot
        `_2` - the second slot
        `_3` - the third slot
        `_4` - the fourth slot
        `_5` - the fifth slot
        `_6` - the sixth slot
        `_7` - the seventh slot
        `_8` - the eighth slot
      Returns:
        the `Product8`