S - the source of a PPrismT - the modified source of a PPrismA - the target of a PPrismB - the modified target of a PPrismpublic abstract class PPrism<S,T,A,B>
extends java.lang.Object
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| Modifier and Type | Method and Description |
|---|---|
Fold<S,A> |
asFold()
|
POptional<S,T,A,B> |
asOptional()
|
PSetter<S,T,A,B> |
asSetter()
|
PTraversal<S,T,A,B> |
asTraversal()
view a
PPrism as a PTraversal |
<C> Fold<S,C> |
composeFold(Fold<A,C> other)
|
<C> Fold<S,C> |
composeGetter(Getter<A,C> other)
|
<C,D> PPrism<S,T,C,D> |
composeIso(PIso<A,B,C,D> other)
|
<C,D> POptional<S,T,C,D> |
composeLens(PLens<A,B,C,D> other)
|
<C,D> POptional<S,T,C,D> |
composeOptional(POptional<A,B,C,D> other)
|
<C,D> PPrism<S,T,C,D> |
composePrism(PPrism<A,B,C,D> other)
|
<C,D> PSetter<S,T,C,D> |
composeSetter(PSetter<A,B,C,D> other)
|
<C,D> PTraversal<S,T,C,D> |
composeTraversal(PTraversal<A,B,C,D> other)
compose a
PPrism with a PTraversal |
abstract Option<A> |
getOption(S s)
get the target of a
PPrism or nothing if there is no target |
abstract Either<T,A> |
getOrModify(S s)
get the target of a
PPrism or modify the source in case there is no target |
boolean |
isMatching(S s)
check if a
PPrism has a target |
F<S,T> |
modify(F<A,B> f)
modify polymorphically the target of a
PPrism with a function |
<L> F<S,Either<L,T>> |
modifyEitherF(F<A,Either<L,B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
<C> F<S,F<C,T>> |
modifyFunctionF(F<A,F<C,B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,IO<T>> |
modifyIOF(F<A,IO<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,List<T>> |
modifyListF(F<A,List<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,Option<T>> |
modifyOption(F<A,B> f)
|
F<S,Option<T>> |
modifyOptionF(F<A,Option<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,P1<T>> |
modifyP1F(F<A,P1<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,Promise<T>> |
modifyPromiseF(F<A,Promise<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,Stream<T>> |
modifyStreamF(F<A,Stream<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,Trampoline<T>> |
modifyTrampolineF(F<A,Trampoline<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
F<S,V2<T>> |
modifyV2F(F<A,V2<B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
<E> F<S,Validation<E,T>> |
modifyValidationF(F<A,Validation<E,B>> f)
modify polymorphically the target of a
PPrism with an Applicative function |
static <S,T> PPrism<S,T,S,T> |
pId() |
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 |
Getter<B,T> |
re()
|
abstract T |
reverseGet(B b)
get the modified source of a
PPrism |
F<S,T> |
set(B b)
set polymorphically the target of a
PPrism with a value |
F<S,Option<T>> |
setOption(B b)
|
public abstract Either<T,A> getOrModify(S s)
PPrism or modify the source in case there is no targetpublic abstract Option<A> getOption(S s)
PPrism or nothing if there is no targetpublic final <C> F<S,F<C,T>> modifyFunctionF(F<A,F<C,B>> f)
PPrism with an Applicative functionpublic final <L> F<S,Either<L,T>> modifyEitherF(F<A,Either<L,B>> f)
PPrism with an Applicative functionpublic final F<S,IO<T>> modifyIOF(F<A,IO<B>> f)
PPrism with an Applicative functionpublic final F<S,Trampoline<T>> modifyTrampolineF(F<A,Trampoline<B>> f)
PPrism with an Applicative functionpublic final F<S,Promise<T>> modifyPromiseF(F<A,Promise<B>> f)
PPrism with an Applicative functionpublic final F<S,List<T>> modifyListF(F<A,List<B>> f)
PPrism with an Applicative functionpublic final F<S,Option<T>> modifyOptionF(F<A,Option<B>> f)
PPrism with an Applicative functionpublic final F<S,Stream<T>> modifyStreamF(F<A,Stream<B>> f)
PPrism with an Applicative functionpublic final F<S,P1<T>> modifyP1F(F<A,P1<B>> f)
PPrism with an Applicative functionpublic final <E> F<S,Validation<E,T>> modifyValidationF(F<A,Validation<E,B>> f)
PPrism with an Applicative functionpublic final F<S,V2<T>> modifyV2F(F<A,V2<B>> f)
PPrism with an Applicative functionpublic final F<S,T> modify(F<A,B> f)
PPrism with a functionpublic final <C,D> PTraversal<S,T,C,D> composeTraversal(PTraversal<A,B,C,D> other)
PPrism with a PTraversalpublic PTraversal<S,T,A,B> asTraversal()
PPrism as a PTraversalpublic static <S,T> PPrism<S,T,S,T> pId()