Class Under<S,T,A,B>

java.lang.Object
com.jnape.palatable.lambda.optics.functions.Under<S,T,A,B>
Type Parameters:
S - the larger type for focusing
T - the larger type for mirrored focusing
A - the smaller type for focusing
B - the smaller type for mirrored focusing
All Implemented Interfaces:
Fn1<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>>, Fn2<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<? super T,? extends S>,Fn1<B,A>>, Fn3<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<? super T,? extends S>,B,A>, Applicative<Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,?>>, Cartesian<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<?,?>>, Cocartesian<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<?,?>>, Contravariant<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Profunctor<?,Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<?,?>>>, Functor<Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,?>>, Profunctor<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<?,?>>, Monad<Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,?>>, MonadReader<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,?>>, MonadRec<Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,?>>, MonadWriter<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<Fn1<? super T,? extends S>,Fn1<B,A>>,Fn1<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,?>>

public final class Under<S,T,A,B> extends Object implements Fn3<Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B>,Fn1<? super T,? extends S>,B,A>
The inverse of Over: given an Iso, a function from T to S, and a "smaller" value B, return a "smaller" value A by traversing around the type ring (B -> T -> S -> A).
  • Field Details

    • INSTANCE

      private static final Under<?,?,?,?> INSTANCE
  • Constructor Details

    • Under

      private Under()
  • Method Details

    • checkedApply

      public A checkedApply(Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B> optic, Fn1<? super T,? extends S> fn, B b)
      Specified by:
      checkedApply in interface Fn3<S,T,A,B>
    • under

      public static <S, T, A, B> Under<S,T,A,B> under()
    • under

      public static <S, T, A, B> Fn2<Fn1<? super T,? extends S>,B,A> under(Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B> optic)
    • under

      public static <S, T, A, B> Fn1<B,A> under(Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B> optic, Fn1<? super T,? extends S> fn)
    • under

      public static <S, T, A, B> A under(Optic<? super Exchange<A,B,?,?>,? super Identity<?>,S,T,A,B> optic, Fn1<? super T,? extends S> fn, B b)