com.jnape.palatable.lambda.functions.builtin.fn5

## Class LiftA4<A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>>

- java.lang.Object
- - com.jnape.palatable.lambda.functions.builtin.fn5.LiftA4<A,B,C,D,E,App,AppE>

- 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 fourth argument type
    `E` - the function's return type
    `App` - the applicative witness
    `AppE` - the inferred applicative return type
  All Implemented Interfaces:
    Fn1<Fn4<A,B,C,D,E>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>>, Fn2<Fn4<A,B,C,D,E>,Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>, Fn3<Fn4<A,B,C,D,E>,Applicative<A,App>,Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>, Fn4<Fn4<A,B,C,D,E>,Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>, Fn5<Fn4<A,B,C,D,E>,Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,Applicative<D,App>,AppE>, Applicative<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<Fn4<A,B,C,D,E>,?>>, Cartesian<Fn4<A,B,C,D,E>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<?,?>>, Cocartesian<Fn4<A,B,C,D,E>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<?,?>>, Contravariant<Fn4<A,B,C,D,E>,Profunctor<?,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<?,?>>>, Functor<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<Fn4<A,B,C,D,E>,?>>, Profunctor<Fn4<A,B,C,D,E>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<?,?>>, Monad<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<Fn4<A,B,C,D,E>,?>>, MonadReader<Fn4<A,B,C,D,E>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<Fn4<A,B,C,D,E>,?>>, MonadRec<Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<Fn4<A,B,C,D,E>,?>>, MonadWriter<Fn4<A,B,C,D,E>,Fn1<Applicative<A,App>,Fn1<Applicative<B,App>,Fn1<Applicative<C,App>,Fn1<Applicative<D,App>,AppE>>>>,Fn1<Fn4<A,B,C,D,E>,?>>

      public final class LiftA4<A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>>
      extends Object
      implements Fn5<Fn4<A,B,C,D,E>,Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,Applicative<D,App>,AppE>

  Lift into and apply an `Fn4` to four `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
    --- | ---
    `AppE` | `checkedApply(Fn4<A,B,C,D,E> fn, Applicative<A,App> appA, Applicative<B,App> appB, Applicative<C,App> appC, Applicative<D,App> appD)`
    `static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> LiftA4<A,B,C,D,E,App,AppE>` | `liftA4()`
    `static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn4<Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,Applicative<D,App>,AppE>` | `liftA4(Fn4<A,B,C,D,E> fn)`
    `static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn3<Applicative<B,App>,Applicative<C,App>,Applicative<D,App>,AppE>` | `liftA4(Fn4<A,B,C,D,E> fn, Applicative<A,App> appA)`
    `static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn2<Applicative<C,App>,Applicative<D,App>,AppE>` | `liftA4(Fn4<A,B,C,D,E> fn, Applicative<A,App> appA, Applicative<B,App> appB)`
    `static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn1<Applicative<D,App>,AppE>` | `liftA4(Fn4<A,B,C,D,E> fn, Applicative<A,App> appA, Applicative<B,App> appB, Applicative<C,App> appC)`
    `static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> AppE` | `liftA4(Fn4<A,B,C,D,E> fn, Applicative<A,App> appA, Applicative<B,App> appB, Applicative<C,App> appC, Applicative<D,App> appD)`

    - ### 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.Fn5

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

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

      `checkedApply, fn4, fn4, fn4, fn4`

    - ### 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 AppE checkedApply(Fn4<A,B,C,D,E> fn,
                                   Applicative<A,App> appA,
                                   Applicative<B,App> appB,
                                   Applicative<C,App> appC,
                                   Applicative<D,App> appD)

      Specified by:
        `checkedApply` in interface `Fn5<Fn4<A,B,C,D,E>,Applicative<A,App extends Applicative<?,App>>,Applicative<B,App extends Applicative<?,App>>,Applicative<C,App extends Applicative<?,App>>,Applicative<D,App extends Applicative<?,App>>,AppE extends Applicative<E,App>>`

    - #### liftA4

          public static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> LiftA4<A,B,C,D,E,App,AppE> liftA4()

    - #### liftA4

          public static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn4<Applicative<A,App>,Applicative<B,App>,Applicative<C,App>,Applicative<D,App>,AppE> liftA4(Fn4<A,B,C,D,E> fn)

    - #### liftA4

          public static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn3<Applicative<B,App>,Applicative<C,App>,Applicative<D,App>,AppE> liftA4(Fn4<A,B,C,D,E> fn,
                                                                                                                                                                             Applicative<A,App> appA)

    - #### liftA4

          public static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn2<Applicative<C,App>,Applicative<D,App>,AppE> liftA4(Fn4<A,B,C,D,E> fn,
                                                                                                                                                          Applicative<A,App> appA,
                                                                                                                                                          Applicative<B,App> appB)

    - #### liftA4

          public static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> Fn1<Applicative<D,App>,AppE> liftA4(Fn4<A,B,C,D,E> fn,
                                                                                                                                       Applicative<A,App> appA,
                                                                                                                                       Applicative<B,App> appB,
                                                                                                                                       Applicative<C,App> appC)

    - #### liftA4

          public static <A,B,C,D,E,App extends Applicative<?,App>,AppE extends Applicative<E,App>> AppE liftA4(Fn4<A,B,C,D,E> fn,
                                                                                                               Applicative<A,App> appA,
                                                                                                               Applicative<B,App> appB,
                                                                                                               Applicative<C,App> appC,
                                                                                                               Applicative<D,App> appD)