Class FoldLeft<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>,​B>>>, Fn2<Fn2<? super B,​? super A,​? extends B>,​B,​Fn1<java.lang.Iterable<A>,​B>>, Fn3<Fn2<? super B,​? super A,​? extends B>,​B,​java.lang.Iterable<A>,​B>, Applicative<Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, Cartesian<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<?,​?>>, Cocartesian<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<?,​?>>, Contravariant<Fn2<? super B,​? super A,​? extends B>,​Profunctor<?,​Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<?,​?>>>, Functor<Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, Profunctor<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<?,​?>>, Monad<Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, MonadReader<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, MonadRec<Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>, MonadWriter<Fn2<? super B,​? super A,​? extends B>,​Fn1<B,​Fn1<java.lang.Iterable<A>,​B>>,​Fn1<Fn2<? super B,​? super A,​? extends B>,​?>>

    public final class FoldLeft<A,​B>
    extends java.lang.Object
    implements Fn3<Fn2<? super B,​? super A,​? extends B>,​B,​java.lang.Iterable<A>,​B>
    Given an Iterable of As, a starting value B, and a Fn2<B, A, B>, iteratively accumulate over the Iterable, ultimately returning a final B value. If the Iterable is empty, just return the starting B value. Note that, as the name implies, this function accumulates from left to right, such that foldLeft(f, 0, asList(1, 2, 3, 4, 5)) is evaluated as f(f(f(f(f(0, 1), 2), 3), 4), 5).

    For more information, read about Catamorphisms.

    See Also:
    FoldRight
    • Field Detail

      • INSTANCE

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

      • FoldLeft

        private FoldLeft()
    • Method Detail

      • checkedApply

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

        public static <A,​B> FoldLeft<A,​B> foldLeft()
      • foldLeft

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

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

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