Class ScanLeft<A,​B>

  • Type Parameters:
    A - The Iterable element type
    B - The accumulation type
    All Implemented Interfaces:
    Fn1<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>>, Fn2<Fn2<? super B,​? super A,​? extends B>,​B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>, Fn3<Fn2<? super B,​? super A,​? extends B>,​B,​java.lang.Iterable<A>,​java.lang.Iterable<B>>, Applicative<Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, Cartesian<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<?,​?>>, Cocartesian<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<?,​?>>, Contravariant<Fn2<? super B,​? super A,​? extends B>,​Profunctor<?,​Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<?,​?>>>, Functor<Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, Profunctor<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<?,​?>>, Monad<Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, MonadReader<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, MonadRec<Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, MonadWriter<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>

    public final class ScanLeft<A,​B>
    extends java.lang.Object
    implements Fn3<Fn2<? super B,​? super A,​? extends B>,​B,​java.lang.Iterable<A>,​java.lang.Iterable<B>>
    Given an Iterable of As, a starting value B, and a Fn2<B, A, B>, iteratively accumulate over the Iterable, collecting each function application result, finally returning an Iterable of all the results. Note that, as the name implies, this function accumulates from left to right, such that scanLeft(f, 0, asList(1,2,3,4,5)) is evaluated as 0, f(0, 1), f(f(0, 1), 2), f(f(f(0, 1), 2), 3), f(f(f(f(0, 1), 2), 3), 4), f(f(f(f(f(0, 1), 2), 3), 4), 5).
    See Also:
    FoldLeft
    • Field Detail

      • INSTANCE

        private static final ScanLeft<?,​?> INSTANCE
    • Constructor Detail

      • ScanLeft

        private ScanLeft()
    • Method Detail

      • checkedApply

        public java.lang.Iterable<B> checkedApply​(Fn2<? super B,​? super A,​? extends B> fn,
                                                  B b,
                                                  java.lang.Iterable<A> as)
        Specified by:
        checkedApply in interface Fn3<Fn2<? super B,​? super A,​? extends B>,​B,​java.lang.Iterable<A>,​java.lang.Iterable<B>>
      • scanLeft

        public static <A,​B> ScanLeft<A,​B> scanLeft()
      • scanLeft

        public static <A,​B> Fn2<B,​java.lang.Iterable<A>,​java.lang.Iterable<B>> scanLeft​(Fn2<? super B,​? super A,​? extends B> fn)
      • scanLeft

        public static <A,​B> Fn1<java.lang.Iterable<A>,​java.lang.Iterable<B>> scanLeft​(Fn2<? super B,​? super A,​? extends B> fn,
                                                                                                  B b)
      • scanLeft

        public static <A,​B> java.lang.Iterable<B> scanLeft​(Fn2<? super B,​? super A,​? extends B> fn,
                                                                 B b,
                                                                 java.lang.Iterable<A> as)