Package fj.data.optic

Class 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 java.lang.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 Detail

      • PLens

        PLens()
    • Method Detail

      • 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
      • composeFold

        public final <C> Fold<S,​C> composeFold​(Fold<A,​C> other)
        compose a PLens with a Fold
      • 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
      • 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.