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

- Packages that use ProtoOptic
  Package | Description
  --- | ---
  com.jnape.palatable.lambda.optics |
  com.jnape.palatable.lambda.optics.functions |

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

    Subinterfaces of ProtoOptic in com.jnape.palatable.lambda.optics
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `Prism<S,T,A,B>` Prisms are `Isos` that can fail in one direction.
    `static interface` | `Prism.Simple<S,A>` A convenience type with a simplified type signature for common `prism` with unified `S/T` and `A/B` types.

    Methods in com.jnape.palatable.lambda.optics that return ProtoOptic
    Modifier and Type | Method and Description
    --- | ---
    `default <Z,C> ProtoOptic<P,S,T,Z,C>` | ProtoOptic.`andThen(ProtoOptic<? super P,A,B,Z,C> f)` Left-to-right composition of proto-optics.
    `default <R,U> ProtoOptic<P,R,U,A,B>` | ProtoOptic.`compose(ProtoOptic<? super P,R,U,S,T> g)` Right-to-Left composition of proto-optics.
    `default <C> ProtoOptic<P,S,T,C,B>` | ProtoOptic.`mapA(Fn1<? super A,? extends C> fn)` Covariantly map `A` to `C`, yielding a new optic.
    `default <Z> ProtoOptic<P,S,T,A,Z>` | ProtoOptic.`mapB(Fn1<? super Z,? extends B> fn)` Contravariantly map `B` to `Z`, yielding a new optic.
    `default <R> ProtoOptic<P,R,T,A,B>` | ProtoOptic.`mapS(Fn1<? super R,? extends S> fn)` Contravariantly map `S` to `R`, yielding a new optic.
    `default <U> ProtoOptic<P,S,U,A,B>` | ProtoOptic.`mapT(Fn1<? super T,? extends U> fn)` Covariantly map `T` to `U`, yielding a new optic.

    Methods in com.jnape.palatable.lambda.optics with parameters of type ProtoOptic
    Modifier and Type | Method and Description
    --- | ---
    `static <S,A> Prism.Simple<S,A>` | Prism.Simple.`adapt(ProtoOptic<? super Cocartesian<?,?,?>,S,S,A,A> protoOptic)` Adapt a `ProtoOptic` with compatible bounds to a `simple Prism`.
    `default <Z,C> Prism<S,T,Z,C>` | Prism.`andThen(ProtoOptic<? super Cocartesian<?,?,?>,A,B,Z,C> f)` Left-to-right composition of proto-optics.
    `default <Z,C> ProtoOptic<P,S,T,Z,C>` | ProtoOptic.`andThen(ProtoOptic<? super P,A,B,Z,C> f)` Left-to-right composition of proto-optics.
    `default <R,U> Prism<R,U,A,B>` | Prism.`compose(ProtoOptic<? super Cocartesian<?,?,?>,R,U,S,T> g)` Right-to-Left composition of proto-optics.
    `default <R,U> ProtoOptic<P,R,U,A,B>` | ProtoOptic.`compose(ProtoOptic<? super P,R,U,S,T> g)` Right-to-Left composition of proto-optics.
    `static <S,T,A,B> Prism<S,T,A,B>` | Prism.`prism(ProtoOptic<? super Cocartesian<?,?,?>,S,T,A,B> protoOptic)` Promote a `ProtoOptic` with compatible bounds to an `Prism`.

  - ### Uses of ProtoOptic in com.jnape.palatable.lambda.optics.functions

    Methods in com.jnape.palatable.lambda.optics.functions with parameters of type ProtoOptic
    Modifier and Type | Method and Description
    --- | ---
    `static <P extends Profunctor<?,?,? extends P>,S,T,A,B> Optic<P,Const<Maybe<A>,?>,S,T,Maybe<A>,B>` | Pre.`pre(ProtoOptic<P,S,T,A,B> protoOptic)`