Interface Optic<Proof extends K1, S, T, A, B>

All Known Subinterfaces:
Adapter<S,T,A,B>, Affine<S,T,A,B>, Getter<S,T,A,B>, Grate<S,T,A,B>, Lens<S,T,A,B>, Prism<S,T,A,B>, Traversal<S,T,A,B>
All Known Implementing Classes:
IdAdapter, Inj1, Inj2, InjTagged, ListTraversal, Optic.CompositionOptic, Proj1, Proj2

public interface Optic<Proof extends K1, S, T, A, B>
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static final record 
     
  • Method Summary

    Modifier and Type
    Method
    Description
    <P extends K2>
    Function<App2<P,A,B>, App2<P,S,T>>
    eval(App<? extends Proof, P> proof)
     
    default <Proof2 extends K1>
    Optional<Optic<? super Proof2, S, T, A, B>>
    upCast(Set<com.google.common.reflect.TypeToken<? extends K1>> proofBounds, com.google.common.reflect.TypeToken<Proof2> proof)
     
  • Method Details

    • eval

      <P extends K2> Function<App2<P,A,B>, App2<P,S,T>> eval(App<? extends Proof, P> proof)
    • upCast

      default <Proof2 extends K1> Optional<Optic<? super Proof2, S, T, A, B>> upCast(Set<com.google.common.reflect.TypeToken<? extends K1>> proofBounds, com.google.common.reflect.TypeToken<Proof2> proof)