Package fj.data.optic

Class PPrism<S,T,A,B>

java.lang.Object
fj.data.optic.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 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 Details

    • PPrism

      PPrism()
  • Method Details

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

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

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

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

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

      public final <C, D> POptional<S,T,C,D> composeLens(PLens<A,B,C,D> other)
      compose a PPrism with a PLens
    • 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
    • asFold

      public final Fold<S,A> asFold()
      view a PPrism as a Fold
    • asSetter

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

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

      public POptional<S,T,A,B> asOptional()
      view a PPrism as a POptional
    • 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