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

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

    public abstract class PTraversal<S,​T,​A,​B>
    extends java.lang.Object
    A PTraversal can be seen as a POptional generalised to 0 to n targets where n can be infinite.

    PTraversal stands for Polymorphic Traversal as it set and modify methods change a type `A` to `B` and `S` to `T`. Traversal is a PTraversal restricted to monomorphic updates.

    • Constructor Summary

      Constructors 
      Constructor Description
      PTraversal()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.function.Predicate<S> all​(java.util.function.Predicate<A> p)
      check if all targets satisfy the predicate
      Fold<S,​A> asFold()
      view a PTraversal as a Fold
      PSetter<S,​T,​A,​B> asSetter()
      view a PTraversal as a PSetter
      <C> Fold<S,​C> composeFold​(Fold<A,​C> other)
      compose a PTraversal with a Fold
      <C> Fold<S,​C> composeFold​(Getter<A,​C> other)
      compose a PTraversal with a Getter
      <C,​D>
      PTraversal<S,​T,​C,​D>
      composeIso​(PIso<A,​B,​C,​D> other)
      compose a PTraversal with a PIso
      <C,​D>
      PTraversal<S,​T,​C,​D>
      composeLens​(PLens<A,​B,​C,​D> other)
      compose a PTraversal with a PLens
      <C,​D>
      PTraversal<S,​T,​C,​D>
      composeOptional​(POptional<A,​B,​C,​D> other)
      compose a PTraversal with a POptional
      <C,​D>
      PTraversal<S,​T,​C,​D>
      composePrism​(PPrism<A,​B,​C,​D> other)
      compose a PTraversal with a PPrism
      <C,​D>
      PSetter<S,​T,​C,​D>
      composeSetter​(PSetter<A,​B,​C,​D> other)
      compose a PTraversal with a PSetter
      <C,​D>
      PTraversal<S,​T,​C,​D>
      composeTraversal​(PTraversal<A,​B,​C,​D> other)
      compose a PTraversal with a PTraversal
      java.util.function.Predicate<S> exist​(java.util.function.Predicate<A> p)
      check if at least one target satisfies the predicate
      java.util.function.Function<S,​Option<A>> find​(java.util.function.Predicate<A> p)
      find the first target of a PTraversal matching the predicate
      java.util.function.Function<S,​A> fold​(Monoid<A> monoid)
      combine all targets using a target's Monoid
      abstract <M> java.util.function.Function<S,​M> foldMap​(Monoid<M> monoid, java.util.function.Function<A,​M> f)
      map each target to a Monoid and combine the results
      private static <S,​T,​A,​B>
      PTraversal<S,​T,​A,​B>
      fromCurried​(PTraversal<S,​java.util.function.Function<B,​T>,​A,​B> curriedTraversal, java.util.function.Function<S,​A> lastGet)  
      java.lang.Iterable<A> getAll​(S s)
      get all the targets of a PTraversal
      Option<A> headOption​(S s)
      get the first target of a PTraversal
      java.util.function.Function<S,​T> modify​(java.util.function.Function<A,​B> f)
      modify polymorphically the target of a PTraversal with a function
      abstract <L> java.util.function.Function<S,​Either<L,​T>> modifyEitherF​(java.util.function.Function<A,​Either<L,​B>> f)
      modify polymorphically the target of a PTraversal with an Applicative function
      abstract <C> java.util.function.Function<S,​java.util.function.Function<C,​T>> modifyFunctionF​(java.util.function.Function<A,​java.util.function.Function<C,​B>> f)
      modify polymorphically the target of a PTraversal with an Applicative function
      abstract java.util.function.Function<S,​java.lang.Iterable<T>> modifyIterableF​(java.util.function.Function<A,​java.lang.Iterable<B>> f)
      modify polymorphically the target of a PTraversal with an Applicative function
      abstract java.util.function.Function<S,​Option<T>> modifyOptionF​(java.util.function.Function<A,​Option<B>> f)
      modify polymorphically the target of a PTraversal with an Applicative function
      abstract java.util.function.Function<S,​Pair<T,​T>> modifyPairF​(java.util.function.Function<A,​Pair<B,​B>> f)
      modify polymorphically the target of a PTraversal with an Applicative function
      abstract java.util.function.Function<S,​java.util.function.Supplier<T>> modifySupplierF​(java.util.function.Function<A,​java.util.function.Supplier<B>> f)
      modify polymorphically the target of a PTraversal with an Applicative function
      static <S,​T>
      PTraversal<Either<S,​S>,​Either<T,​T>,​S,​T>
      pCodiagonal()  
      static <S,​T>
      PTraversal<S,​T,​S,​T>
      pId()  
      static <S,​T,​A,​B>
      PTraversal<S,​T,​A,​B>
      pTraversal​(java.util.function.Function<S,​A> get1, java.util.function.Function<S,​A> get2, java.util.function.BiFunction<B,​B,​java.util.function.Function<S,​T>> set)  
      static <S,​T,​A,​B>
      PTraversal<S,​T,​A,​B>
      pTraversal​(java.util.function.Function<S,​A> get1, java.util.function.Function<S,​A> get2, java.util.function.Function<S,​A> get3, java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>> set)  
      static <S,​T,​A,​B>
      PTraversal<S,​T,​A,​B>
      pTraversal​(java.util.function.Function<S,​A> get1, java.util.function.Function<S,​A> get2, java.util.function.Function<S,​A> get3, java.util.function.Function<S,​A> get4, java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>>> set)  
      static <S,​T,​A,​B>
      PTraversal<S,​T,​A,​B>
      pTraversal​(java.util.function.Function<S,​A> get1, java.util.function.Function<S,​A> get2, java.util.function.Function<S,​A> get3, java.util.function.Function<S,​A> get4, java.util.function.Function<S,​A> get5, java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>>>> set)  
      static <S,​T,​A,​B>
      PTraversal<S,​T,​A,​B>
      pTraversal​(java.util.function.Function<S,​A> get1, java.util.function.Function<S,​A> get2, java.util.function.Function<S,​A> get3, java.util.function.Function<S,​A> get4, java.util.function.Function<S,​A> get5, java.util.function.Function<S,​A> get6, java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>>>>> set)  
      java.util.function.Function<S,​T> set​(B b)
      set polymorphically the target of a PTraversal with a value
      <S1,​T1>
      PTraversal<Either<S,​S1>,​Either<T,​T1>,​A,​B>
      sum​(PTraversal<S1,​T1,​A,​B> other)
      join two PTraversal with the same target
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PTraversal

        public PTraversal()
    • Method Detail

      • modifyFunctionF

        public abstract <C> java.util.function.Function<S,​java.util.function.Function<C,​T>> modifyFunctionF​(java.util.function.Function<A,​java.util.function.Function<C,​B>> f)
        modify polymorphically the target of a PTraversal with an Applicative function
      • modifyEitherF

        public abstract <L> java.util.function.Function<S,​Either<L,​T>> modifyEitherF​(java.util.function.Function<A,​Either<L,​B>> f)
        modify polymorphically the target of a PTraversal with an Applicative function
      • modifyOptionF

        public abstract java.util.function.Function<S,​Option<T>> modifyOptionF​(java.util.function.Function<A,​Option<B>> f)
        modify polymorphically the target of a PTraversal with an Applicative function
      • modifyIterableF

        public abstract java.util.function.Function<S,​java.lang.Iterable<T>> modifyIterableF​(java.util.function.Function<A,​java.lang.Iterable<B>> f)
        modify polymorphically the target of a PTraversal with an Applicative function
      • modifySupplierF

        public abstract java.util.function.Function<S,​java.util.function.Supplier<T>> modifySupplierF​(java.util.function.Function<A,​java.util.function.Supplier<B>> f)
        modify polymorphically the target of a PTraversal with an Applicative function
      • modifyPairF

        public abstract java.util.function.Function<S,​Pair<T,​T>> modifyPairF​(java.util.function.Function<A,​Pair<B,​B>> f)
        modify polymorphically the target of a PTraversal with an Applicative function
      • foldMap

        public abstract <M> java.util.function.Function<S,​M> foldMap​(Monoid<M> monoid,
                                                                           java.util.function.Function<A,​M> f)
        map each target to a Monoid and combine the results
      • fold

        public final java.util.function.Function<S,​A> fold​(Monoid<A> monoid)
        combine all targets using a target's Monoid
      • getAll

        public final java.lang.Iterable<A> getAll​(S s)
        get all the targets of a PTraversal
      • find

        public final java.util.function.Function<S,​Option<A>> find​(java.util.function.Predicate<A> p)
        find the first target of a PTraversal matching the predicate
      • headOption

        public final Option<A> headOption​(S s)
        get the first target of a PTraversal
      • exist

        public final java.util.function.Predicate<S> exist​(java.util.function.Predicate<A> p)
        check if at least one target satisfies the predicate
      • all

        public final java.util.function.Predicate<S> all​(java.util.function.Predicate<A> p)
        check if all targets satisfy the predicate
      • modify

        public final java.util.function.Function<S,​T> modify​(java.util.function.Function<A,​B> f)
        modify polymorphically the target of a PTraversal with a function
      • set

        public final java.util.function.Function<S,​T> set​(B b)
        set polymorphically the target of a PTraversal with a value
      • pId

        public static <S,​T> PTraversal<S,​T,​S,​T> pId()
      • pTraversal

        public static <S,​T,​A,​B> PTraversal<S,​T,​A,​B> pTraversal​(java.util.function.Function<S,​A> get1,
                                                                                                   java.util.function.Function<S,​A> get2,
                                                                                                   java.util.function.BiFunction<B,​B,​java.util.function.Function<S,​T>> set)
      • pTraversal

        public static <S,​T,​A,​B> PTraversal<S,​T,​A,​B> pTraversal​(java.util.function.Function<S,​A> get1,
                                                                                                   java.util.function.Function<S,​A> get2,
                                                                                                   java.util.function.Function<S,​A> get3,
                                                                                                   java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>> set)
      • pTraversal

        public static <S,​T,​A,​B> PTraversal<S,​T,​A,​B> pTraversal​(java.util.function.Function<S,​A> get1,
                                                                                                   java.util.function.Function<S,​A> get2,
                                                                                                   java.util.function.Function<S,​A> get3,
                                                                                                   java.util.function.Function<S,​A> get4,
                                                                                                   java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>>> set)
      • pTraversal

        public static <S,​T,​A,​B> PTraversal<S,​T,​A,​B> pTraversal​(java.util.function.Function<S,​A> get1,
                                                                                                   java.util.function.Function<S,​A> get2,
                                                                                                   java.util.function.Function<S,​A> get3,
                                                                                                   java.util.function.Function<S,​A> get4,
                                                                                                   java.util.function.Function<S,​A> get5,
                                                                                                   java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>>>> set)
      • pTraversal

        public static <S,​T,​A,​B> PTraversal<S,​T,​A,​B> pTraversal​(java.util.function.Function<S,​A> get1,
                                                                                                   java.util.function.Function<S,​A> get2,
                                                                                                   java.util.function.Function<S,​A> get3,
                                                                                                   java.util.function.Function<S,​A> get4,
                                                                                                   java.util.function.Function<S,​A> get5,
                                                                                                   java.util.function.Function<S,​A> get6,
                                                                                                   java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<B,​java.util.function.Function<S,​T>>>>>>> set)
      • fromCurried

        private static <S,​T,​A,​B> PTraversal<S,​T,​A,​B> fromCurried​(PTraversal<S,​java.util.function.Function<B,​T>,​A,​B> curriedTraversal,
                                                                                                     java.util.function.Function<S,​A> lastGet)