@Override public final <S, U,R> ReactiveSeq<R> zip3(final Iterable<? extends S> second, final Iterable<? extends U> third, final Function3<? super T, ? super S, ? super U,? extends R> fn3) { return createSeq( new Zipping3Spliterator<>(get(),second.spliterator(),third.spliterator(),fn3)); }
@Override public <S, U> ReactiveSeq<Tuple3<T, S, U>> zip3(Iterable<? extends S> second, Iterable<? extends U> third) { return createSeq( new Zipping3Spliterator<>(get(),second.spliterator(),third.spliterator(),(a, b, c)->Tuple.tuple(a,b,c))); }
@Override public Spliterator<R> copy() { return new Zipping3Spliterator(CopyableSpliterator.copy(left), CopyableSpliterator.copy(middle), CopyableSpliterator.copy(right),fn); }
public <R2> Zipping3Spliterator<T1,T2,T3,R2> compose(Function<? super R,? extends R2> fn){ return new Zipping3Spliterator<>(CopyableSpliterator.copy(left), CopyableSpliterator.copy(middle), CopyableSpliterator.copy(right), this.fn.andThen3(fn)); }
@Override public final <S, U,R> ReactiveSeq<R> zip3(final Iterable<? extends S> second, final Iterable<? extends U> third, final Function3<? super T, ? super S, ? super U,? extends R> fn3) { return createSeq( new Zipping3Spliterator<>(get(),second.spliterator(),third.spliterator(),fn3)); }
@Override public <S, U> ReactiveSeq<Tuple3<T, S, U>> zip3(Iterable<? extends S> second, Iterable<? extends U> third) { return createSeq( new Zipping3Spliterator<>(get(),second.spliterator(),third.spliterator(),(a, b, c)->Tuple.tuple(a,b,c))); }
@Override public Spliterator<R> copy() { return new Zipping3Spliterator(CopyableSpliterator.copy(left), CopyableSpliterator.copy(middle), CopyableSpliterator.copy(right),fn); }
public <R2> Zipping3Spliterator<T1,T2,T3,R2> compose(Function<? super R,? extends R2> fn){ return new Zipping3Spliterator<>(CopyableSpliterator.copy(left), CopyableSpliterator.copy(middle), CopyableSpliterator.copy(right), this.fn.andThen3(fn)); }