default <R> R foldInvalidLeft(R zero, BiFunction<R,? super E,R> fold){ return toEither().mapLeft(l->l.foldLeft(zero,fold)).swap().orElse(zero); } default E foldInvalidLeft(Monoid<E> reducer){
default E foldInvalidLeft(Monoid<E> reducer){ return toEither().mapLeft(l->l.foldLeft(reducer.zero(),reducer)).swap().orElse(reducer.zero()); }
@Test public void stream(){ System.out.println("D"+of(1, 2, 3, 4, 5).drop(2).toList()); assertThat(NonEmptyList.of(1,2,3).foldLeft(0,(a,b)->a+b),equalTo(6)); NonEmptyList.of(1,2,3,4).takeRight(2).forEach(System.out::println); } @Test
default <R> R foldInvalidLeft(R zero, BiFunction<R,? super E,R> fold){ return toEither().mapLeft(l->l.foldLeft(zero,fold)).swap().orElse(zero); } default E foldInvalidLeft(Monoid<E> reducer){
default E foldInvalidLeft(Monoid<E> reducer){ return toEither().mapLeft(l->l.foldLeft(reducer.zero(),reducer)).swap().orElse(reducer.zero()); }