Package fj.data.optic

Class PPrism<S,​T,​A,​B>

  • Type Parameters:
    S - the source of a PPrism
    T - the modified source of a PPrism
    A - the target of a PPrism
    B - the modified target of a PPrism
    Direct Known Subclasses:
    Prism

    public abstract class PPrism<S,​T,​A,​B>
    extends java.lang.Object
    A PPrism can be seen as a pair of functions:
    • getOrModify: S => T \/ A
    • reverseGet : B => T

    A PPrism could also be defined as a weaker PIso where get can fail.

    Typically a PPrism or Prism encodes the relation between a Sum or CoProduct type (e.g. sealed trait) and one of it is element.

    PPrism stands for Polymorphic Prism as it set and modify methods change a type A to B and S to T. Prism is a PPrism where the type of target cannot be modified. A PPrism is also a valid Fold, POptional, PTraversal and PSetter
    • Constructor Detail

      • PPrism

        PPrism()
    • Method Detail

      • getOrModify

        public abstract Either<T,​A> getOrModify​(S s)
        get the target of a PPrism or modify the source in case there is no target
      • reverseGet

        public abstract T reverseGet​(B b)
        get the modified source of a PPrism
      • getOption

        public abstract Option<A> getOption​(S s)
        get the target of a PPrism or nothing if there is no target
      • modifyFunctionF

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

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

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

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

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

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

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

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

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

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

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

        public final F<S,​T> modify​(F<A,​B> f)
        modify polymorphically the target of a PPrism with a function
      • modifyOption

        public final F<S,​Option<T>> modifyOption​(F<A,​B> f)
        modify polymorphically the target of a PPrism with a function. return empty if the PPrism is not matching
      • set

        public final F<S,​T> set​(B b)
        set polymorphically the target of a PPrism with a value
      • setOption

        public final F<S,​Option<T>> setOption​(B b)
        set polymorphically the target of a PPrism with a value. return empty if the PPrism is not matching
      • isMatching

        public final boolean isMatching​(S s)
        check if a PPrism has a target
      • re

        public final Getter<B,​T> re()
        create a Getter from the modified target to the modified source of a PPrism
      • composeFold

        public final <C> Fold<S,​C> composeFold​(Fold<A,​C> other)
        compose a PPrism with a Fold
      • composePrism

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

        public final <C,​D> PPrism<S,​T,​C,​D> composeIso​(PIso<A,​B,​C,​D> other)
        compose a PPrism with a PIso
      • pId

        public static <S,​T> PPrism<S,​T,​S,​T> pId()
      • pPrism

        public static <S,​T,​A,​B> PPrism<S,​T,​A,​B> pPrism​(F<S,​Either<T,​A>> getOrModify,
                                                                                           F<B,​T> reverseGet)
        create a PPrism using the canonical functions: getOrModify and reverseGet