com.jnape.palatable.lambda.functions.builtin.fn4

## Class LiftA3<A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>>

- java.lang.Object
- - com.jnape.palatable.lambda.functions.builtin.fn4.LiftA3<A,B,C,D,App,AppD>

- Type Parameters:
    `A` - the function's first argument type
    `B` - the function's second argument type
    `C` - the function's third argument type
    `D` - the function's return type
    `App` - the applicative witness
    `AppD` - the inferred applicative return type
  All Implemented Interfaces:
    Fn1<Fn3<A,B,C,D>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>>, Fn2<Fn3<A,B,C,D>,Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>, Fn3<Fn3<A,B,C,D>,Applicative<A,App>,Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>, Fn4<Fn3<A,B,C,D>,Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,AppD>, Applicative<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<Fn3<A,B,C,D>,?>>, Cartesian<Fn3<A,B,C,D>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<?,?>>, Cocartesian<Fn3<A,B,C,D>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<?,?>>, Contravariant<Fn3<A,B,C,D>,Profunctor<?,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<?,?>>>, Functor<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<Fn3<A,B,C,D>,?>>, Profunctor<Fn3<A,B,C,D>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<?,?>>, Monad<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<Fn3<A,B,C,D>,?>>, MonadReader<Fn3<A,B,C,D>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<Fn3<A,B,C,D>,?>>, MonadRec<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<Fn3<A,B,C,D>,?>>, MonadWriter<Fn3<A,B,C,D>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,AppD>>>,Fn1<Fn3<A,B,C,D>,?>>

      public final class LiftA3<A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>>
      extends Object
      implements Fn4<Fn3<A,B,C,D>,Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,AppD>

  Lift into and apply an `Fn3` to three `Applicative` values, returning the result inside the same `Applicative` context.
  See Also:
    `Applicative.zip(Applicative)`

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `AppD` | `checkedApply(Fn3<A,B,C,D> fn, Applicative<A,App> appA, Applicative<B,App> appB, Applicative<C,App> appC)`
    `static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> LiftA3<A,B,C,D,App,AppD>` | `liftA3()`
    `static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> Fn3<Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,AppD>` | `liftA3(Fn3<A,B,C,D> fn)`
    `static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> Fn2<Applicative<B,App>,Applicative<C,App>,AppD>` | `liftA3(Fn3<A,B,C,D> fn, Applicative<A,App> appA)`
    `static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> Fn1<Applicative<C,App>,AppD>` | `liftA3(Fn3<A,B,C,D> fn, Applicative<A,App> appA, Applicative<B,App> appB)`
    `static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> AppD` | `liftA3(Fn3<A,B,C,D> fn, Applicative<A,App> appA, Applicative<B,App> appB, Applicative<C,App> appC)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.jnape.palatable.lambda.functions.Fn4

      `apply, apply, apply, apply, checkedApply, compose, contraMap, diMapL, discardR, flip, fn4, fn4, fn4, fn4, uncurry, widen`

    - ### Methods inherited from interface com.jnape.palatable.lambda.functions.Fn3

      `checkedApply, fn3, fn3, fn3`

    - ### Methods inherited from interface com.jnape.palatable.lambda.functions.Fn2

      `checkedApply, curried, curry, fn2, fromBiFunction, toBiFunction`

    - ### Methods inherited from interface com.jnape.palatable.lambda.functions.Fn1

      `andThen, carry, cartesian, censor, choose, cocartesian, diMap, diMapR, discardL, flatMap, fmap, fn1, fromFunction, lazyZip, listens, local, pure, pureFn1, thunk, toFunction, trampolineM, zip, zip`

    - ### Methods inherited from interface com.jnape.palatable.lambda.monad.Monad

      `join`

    - ### Methods inherited from interface com.jnape.palatable.lambda.functor.Functor

      `coerce`

- - ### Method Detail

    - #### checkedApply

          public AppD checkedApply(Fn3<A,B,C,D> fn,
                                   Applicative<A,App> appA,
                                   Applicative<B,App> appB,
                                   Applicative<C,App> appC)

      Specified by:
        `checkedApply` in interface `Fn4<Fn3<A,B,C,D>,Applicative<A,App extends Applicative<?,App>>,Applicative<B,App extends Applicative<?,App>>,Applicative<C,App extends Applicative<?,App>>,AppD extends Applicative<D,App>>`

    - #### liftA3

          public static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> LiftA3<A,B,C,D,App,AppD> liftA3()

    - #### liftA3

          public static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> Fn3<Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,AppD> liftA3(Fn3<A,B,C,D> fn)

    - #### liftA3

          public static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> Fn2<Applicative<B,App>,Applicative<C,App>,AppD> liftA3(Fn3<A,B,C,D> fn,
                                                                                                                                                        Applicative<A,App> appA)

    - #### liftA3

          public static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> Fn1<Applicative<C,App>,AppD> liftA3(Fn3<A,B,C,D> fn,
                                                                                                                                     Applicative<A,App> appA,
                                                                                                                                     Applicative<B,App> appB)

    - #### liftA3

          public static <A,B,C,D,App extends Applicative<?,App>,AppD extends Applicative<D,App>> AppD liftA3(Fn3<A,B,C,D> fn,
                                                                                                             Applicative<A,App> appA,
                                                                                                             Applicative<B,App> appB,
                                                                                                             Applicative<C,App> appC)