Package fj.data.optic

Class PLens<S,T,A,B>

java.lang.Object
fj.data.optic.PLens<S,T,A,B>
Type Parameters:
S - the source of a PLens
T - the modified source of a PLens
A - the target of a PLens
B - the modified target of a PLens
Direct Known Subclasses:
Lens

public abstract class PLens<S,T,A,B> extends Object
A PLens can be seen as a pair of functions:
  • get: S => A i.e. from an S, we can extract an A
  • set: (B, S) => T i.e. if we replace an A by a B in an S, we obtain a T

A PLens could also be defined as a weaker PIso where set requires an additional parameter than reverseGet.

PLens stands for Polymorphic Lens as it set and modify methods change a type A to B and S to T. Lens is a PLens restricted to monomoprhic updates.

A PLens is also a valid Getter, Fold, POptional, PTraversal and PSetter

Typically a PLens or Lens can be defined between a Product (e.g. case class, tuple, HList) and one of it is component.

  • Constructor Details

    • PLens

      PLens()
  • Method Details

    • get

      public abstract A get(S s)
      get the target of a PLens
    • set

      public abstract F<S,T> set(B b)
      set polymorphically the target of a PLens using a function
    • modifyFunctionF

      public abstract <C> F<S,F<C,T>> modifyFunctionF(F<A,F<C,B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyEitherF

      public abstract <L> F<S,Either<L,T>> modifyEitherF(F<A,Either<L,B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyIOF

      public abstract F<S,IO<T>> modifyIOF(F<A,IO<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyTrampolineF

      public abstract F<S,Trampoline<T>> modifyTrampolineF(F<A,Trampoline<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyPromiseF

      public abstract F<S,Promise<T>> modifyPromiseF(F<A,Promise<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyListF

      public abstract F<S,List<T>> modifyListF(F<A,List<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyOptionF

      public abstract F<S,Option<T>> modifyOptionF(F<A,Option<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyStreamF

      public abstract F<S,Stream<T>> modifyStreamF(F<A,Stream<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyP1F

      public abstract F<S,P1<T>> modifyP1F(F<A,P1<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyValidationF

      public abstract <E> F<S,Validation<E,T>> modifyValidationF(F<A,Validation<E,B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modifyV2F

      public abstract F<S,V2<T>> modifyV2F(F<A,V2<B>> f)
      modify polymorphically the target of a PLens with an Applicative function
    • modify

      public abstract F<S,T> modify(F<A,B> f)
      modify polymorphically the target of a PLens using a function
    • sum

      public final <S1, T1> PLens<Either<S,S1>,Either<T,T1>,A,B> sum(PLens<S1,T1,A,B> other)
      join two PLens with the same target
    • composeFold

      public final <C> Fold<S,C> composeFold(Fold<A,C> other)
      compose a PLens with a Fold
    • composeGetter

      public final <C> Getter<S,C> composeGetter(Getter<A,C> other)
      compose a PLens with a Getter
    • composeSetter

      public final <C, D> PSetter<S,T,C,D> composeSetter(PSetter<A,B,C,D> other)
      compose a PLens with a PSetter
    • composeTraversal

      public final <C, D> PTraversal<S,T,C,D> composeTraversal(PTraversal<A,B,C,D> other)
      compose a PLens with a PTraversal
    • composeOptional

      public final <C, D> POptional<S,T,C,D> composeOptional(POptional<A,B,C,D> other)
      compose a PLens with an POptional
    • composePrism

      public final <C, D> POptional<S,T,C,D> composePrism(PPrism<A,B,C,D> other)
      compose a PLens with a PPrism
    • composeLens

      public final <C, D> PLens<S,T,C,D> composeLens(PLens<A,B,C,D> other)
      compose a PLens with a PLens
    • composeIso

      public final <C, D> PLens<S,T,C,D> composeIso(PIso<A,B,C,D> other)
      compose a PLens with an PIso
    • asFold

      public final Fold<S,A> asFold()
      view a PLens as a Fold
    • asGetter

      public final Getter<S,A> asGetter()
      view a PLens as a Getter
    • asSetter

      public PSetter<S,T,A,B> asSetter()
      view a PLens as a PSetter
    • asTraversal

      public PTraversal<S,T,A,B> asTraversal()
      view a PLens as a PTraversal
    • asOptional

      public POptional<S,T,A,B> asOptional()
      view a PLens as an POptional
    • pId

      public static <S, T> PLens<S,T,S,T> pId()
    • pLens

      public static <S, T, A, B> PLens<S,T,A,B> pLens(F<S,A> get, F<B,F<S,T>> set)
      create a PLens using a pair of functions: one to get the target, one to set the target.