## Uses of Interface
com.jnape.palatable.lambda.optics.Iso

- Packages that use Iso
  Package | Description
  --- | ---
  com.jnape.palatable.lambda.adt.hmap |
  com.jnape.palatable.lambda.optics |
  com.jnape.palatable.lambda.optics.lenses |

- - ### Uses of Iso in com.jnape.palatable.lambda.adt.hmap

    Subinterfaces of Iso in com.jnape.palatable.lambda.adt.hmap
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `TypeSafeKey<A,B>` An interface representing a parametrized key for use in `HMap`s.
    `static interface` | `TypeSafeKey.Simple<A>` A simplified `TypeSafeKey` that can only view a value of type `A` as an `A`.

    Method parameters in com.jnape.palatable.lambda.adt.hmap with type arguments of type Iso
    Modifier and Type | Method and Description
    --- | ---
    `default <U> TypeSafeKey<A,B>` | TypeSafeKey.`discardR(Applicative<U,Iso<A,?,B,B>> appB)`

  - ### Uses of Iso in com.jnape.palatable.lambda.optics

    Subinterfaces of Iso in com.jnape.palatable.lambda.optics
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `Iso.Simple<S,A>` A convenience type with a simplified type signature for common isos with both unified "larger" values and unified "smaller" values.

    Methods in com.jnape.palatable.lambda.optics that return Iso
    Modifier and Type | Method and Description
    --- | ---
    `default <Z,C> Iso<S,T,Z,C>` | Iso.`andThen(Optic<? super Profunctor<?,?,?>,? super Functor<?,?>,A,B,Z,C> f)` Left-to-right composition of optics.
    `default <R,U> Iso<R,U,A,B>` | Iso.`compose(Optic<? super Profunctor<?,?,?>,? super Functor<?,?>,R,U,S,T> g)` Right-to-Left composition of optics.
    `default <R> Iso<R,T,A,B>` | Iso.`contraMap(Fn1<? super R,? extends S> fn)` Contravariantly map `A <- B`.
    `default <R,U> Iso<R,U,A,B>` | Iso.`diMap(Fn1<? super R,? extends S> lFn, Fn1<? super T,? extends U> rFn)` Dually map contravariantly over the left parameter and covariantly over the right parameter.
    `default <R> Iso<R,T,A,B>` | Iso.`diMapL(Fn1<? super R,? extends S> fn)` Contravariantly map over the left parameter.
    `default <U> Iso<S,U,A,B>` | Iso.`diMapR(Fn1<? super T,? extends U> fn)` Covariantly map over the right parameter.
    `default <U> Iso<S,U,A,B>` | Iso.`discardL(Applicative<U,Iso<S,?,A,B>> appB)` Sequence both this `Applicative` and `appB`, discarding this `Applicative's` result and returning `appB`.
    `default <U> Iso<S,T,A,B>` | Iso.`discardR(Applicative<U,Iso<S,?,A,B>> appB)` Sequence both this `Applicative` and `appB`, discarding `appB's` result and returning this `Applicative`.
    `default <U> Iso<S,U,A,B>` | Iso.`flatMap(Fn1<? super T,? extends Monad<U,Iso<S,?,A,B>>> fn)` Chain dependent computations that may continue or short-circuit based on previous results.
    `default <U> Iso<S,U,A,B>` | Iso.`fmap(Fn1<? super T,? extends U> fn)` Covariantly transmute this functor's parameter using the given mapping function.
    `static <S,T,A,B> Iso<S,T,A,B>` | Iso.`iso(Fn1<? super S,? extends A> f, Fn1<? super B,? extends T> g)` Static factory method for creating an iso from a function and it's inverse.
    `static <S,T,A,B> Iso<S,T,A,B>` | Iso.`iso(Optic<? super Profunctor<?,?,?>,? super Functor<?,?>,S,T,A,B> optic)` Promote an optic with compatible bounds to an `Iso`.
    `default <C> Iso<S,T,C,B>` | Iso.`mapA(Fn1<? super A,? extends C> fn)` Covariantly map `A` to `C`, yielding a new optic.
    `default <Z> Iso<S,T,A,Z>` | Iso.`mapB(Fn1<? super Z,? extends B> fn)` Contravariantly map `B` to `Z`, yielding a new optic.
    `default <R> Iso<R,T,A,B>` | Iso.`mapS(Fn1<? super R,? extends S> fn)` Contravariantly map `S` to `R`, yielding a new optic.
    `default <U> Iso<S,U,A,B>` | Iso.`mapT(Fn1<? super T,? extends U> fn)` Covariantly map `T` to `U`, yielding a new optic.
    `default Iso<B,A,T,S>` | Iso.`mirror()` Flip this `Iso` around.
    `default <U> Iso<S,U,A,B>` | Iso.`pure(U u)` Lift the value `b` into this applicative functor.
    `default Iso<S,T,A,B>` | Lens.`toIso(S s)` Produce an `Iso` from this `Lens` by providing a default `S` value.
    `default <U> Iso<S,U,A,B>` | Iso.`trampolineM(Fn1<? super T,? extends MonadRec<RecursiveResult<T,U>,Iso<S,?,A,B>>> fn)` Given some operation yielding a `RecursiveResult` inside this `MonadRec`, internally trampoline the operation until it yields a `termination` instruction.
    `default <U> Iso<S,U,A,B>` | Iso.`zip(Applicative<Fn1<? super T,? extends U>,Iso<S,?,A,B>> appFn)` Given another instance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports.

    Methods in com.jnape.palatable.lambda.optics that return types with arguments of type Iso
    Modifier and Type | Method and Description
    --- | ---
    `static <S,A,B> Pure<Iso<S,?,A,B>>` | Iso.`pureIso(Fn1<? super S,? extends A> sa)` The canonical `Pure` instance for `Iso`.

    Method parameters in com.jnape.palatable.lambda.optics with type arguments of type Iso
    Modifier and Type | Method and Description
    --- | ---
    `default <U> Iso<S,U,A,B>` | Iso.`discardL(Applicative<U,Iso<S,?,A,B>> appB)` Sequence both this `Applicative` and `appB`, discarding this `Applicative's` result and returning `appB`.
    `default <U> Iso.Simple<S,A>` | Iso.Simple.`discardR(Applicative<U,Iso<S,?,A,A>> appB)` Sequence both this `Applicative` and `appB`, discarding `appB's` result and returning this `Applicative`.
    `default <U> Iso<S,T,A,B>` | Iso.`discardR(Applicative<U,Iso<S,?,A,B>> appB)` Sequence both this `Applicative` and `appB`, discarding `appB's` result and returning this `Applicative`.
    `default <U> Iso<S,U,A,B>` | Iso.`flatMap(Fn1<? super T,? extends Monad<U,Iso<S,?,A,B>>> fn)` Chain dependent computations that may continue or short-circuit based on previous results.
    `default <U> Iso<S,U,A,B>` | Iso.`trampolineM(Fn1<? super T,? extends MonadRec<RecursiveResult<T,U>,Iso<S,?,A,B>>> fn)` Given some operation yielding a `RecursiveResult` inside this `MonadRec`, internally trampoline the operation until it yields a `termination` instruction.
    `default <U> Iso<S,U,A,B>` | Iso.`zip(Applicative<Fn1<? super T,? extends U>,Iso<S,?,A,B>> appFn)` Given another instance of this applicative over a mapping function, "zip" the two instances together using whatever application semantics the current applicative supports.

  - ### Uses of Iso in com.jnape.palatable.lambda.optics.lenses

    Methods in com.jnape.palatable.lambda.optics.lenses with parameters of type Iso
    Modifier and Type | Method and Description
    --- | ---
    `static <A,B> Iso.Simple<Iterable<A>,Iterable<B>>` | IterableLens.`mapping(Iso<A,A,B,B> abIso)` An iso focusing on the mapped values of an `Iterable`.
    `static <K,V,V2> Lens.Simple<Map<K,V>,Map<K,V2>>` | MapLens.`mappingValues(Iso<V,V,V2,V2> iso)` A lens that focuses on a map while mapping its values with the mapping `Iso`.