## Uses of Interface
com.jnape.palatable.lambda.functor.Bifunctor

- Packages that use Bifunctor
  Package | Description
  --- | ---
  com.jnape.palatable.lambda.adt |
  com.jnape.palatable.lambda.adt.choice |
  com.jnape.palatable.lambda.adt.hlist |
  com.jnape.palatable.lambda.functions.recursion |
  com.jnape.palatable.lambda.functor |
  com.jnape.palatable.lambda.functor.builtin |
  com.jnape.palatable.lambda.monad.transformer.builtin |

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

    Classes in com.jnape.palatable.lambda.adt that implement Bifunctor
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Either<L,R>` The binary tagged union, implemented as a specialized `CoProduct2`.
    `class` | `These<A,B>` The coproduct of a coproduct (``CoProduct2`<A, B>`) and its product (``Tuple2`<A, B>`), represented as a ``CoProduct3`<A, B, `Tuple2`<A, B>>`.

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

    Classes in com.jnape.palatable.lambda.adt.choice that implement Bifunctor
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Choice2<A,B>` Canonical ADT representation of `CoProduct2`.
    `class` | `Choice3<A,B,C>` Canonical ADT representation of `CoProduct3`.
    `class` | `Choice4<A,B,C,D>` Canonical ADT representation of `CoProduct4`.
    `class` | `Choice5<A,B,C,D,E>` Canonical ADT representation of `CoProduct5`.
    `class` | `Choice6<A,B,C,D,E,F>` Canonical ADT representation of `CoProduct6`.
    `class` | `Choice7<A,B,C,D,E,F,G>` Canonical ADT representation of `CoProduct7`.
    `class` | `Choice8<A,B,C,D,E,F,G,H>` Canonical ADT representation of `CoProduct8`.

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

    Classes in com.jnape.palatable.lambda.adt.hlist that implement Bifunctor
    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 Bifunctor in com.jnape.palatable.lambda.functions.recursion

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

  - ### Uses of Bifunctor in com.jnape.palatable.lambda.functor

    Classes in com.jnape.palatable.lambda.functor with type parameters of type Bifunctor
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `Bifunctor<A,B,BF extends Bifunctor<?,?,BF>>` A dually-parametric functor that maps covariantly over both parameters.

    Methods in com.jnape.palatable.lambda.functor that return Bifunctor
    Modifier and Type | Method and Description
    --- | ---
    `<C,D> Bifunctor<C,D,BF>` | Bifunctor.`biMap(Fn1<? super A,? extends C> lFn, Fn1<? super B,? extends D> rFn)` Dually map covariantly over both the left and right parameters.
    `default <C> Bifunctor<C,B,BF>` | Bifunctor.`biMapL(Fn1<? super A,? extends C> fn)` Covariantly map over the left parameter.
    `default <C> Bifunctor<A,C,BF>` | Bifunctor.`biMapR(Fn1<? super B,? extends C> fn)` Covariantly map over the right parameter.

  - ### Uses of Bifunctor in com.jnape.palatable.lambda.functor.builtin

    Classes in com.jnape.palatable.lambda.functor.builtin that implement Bifunctor
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Const<A,B>` A (surprisingly useful) functor over some phantom type `B`, retaining a value of type `A` that can be retrieved later.

  - ### Uses of Bifunctor in com.jnape.palatable.lambda.monad.transformer.builtin

    Classes in com.jnape.palatable.lambda.monad.transformer.builtin that implement Bifunctor
    Modifier and Type | Class and Description
    --- | ---
    `class` | `EitherT<M extends MonadRec<?,M>,L,R>` A `monad transformer` for `Either`.