@Override default <T2, R1, R2, R> Eval<R> forEach3(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends MonadicValue<R2>> value2, Function3<? super T, ? super R1, ? super R2, ? extends R> yieldingFunction) { return (Eval<R>)MonadicValue.super.forEach3(value1, value2, yieldingFunction); }
@Override default Maybe<RT> notNull() { return (Maybe<RT>)Filters.super.notNull(); } /*
@Override default ImmutableMap<K,V> filterNot(Predicate<? super Tuple2<K, V>> predicate){ return (HashMap<K,V>)Filters.super.filterNot(predicate); } @Override
@Override default <R1, R> Option<R> forEach2(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends R> yieldingFunction) { return (Option<R>)MonadicValue.super.forEach2(value1, yieldingFunction); }
@Override default <U> Maybe<U> ofType(Class<? extends U> type) { return (Maybe<U>)Filters.super.ofType(type); } /* (non-Javadoc)
@Override default <T2, R1, R2, R3, R> Eval<R> forEach4(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends MonadicValue<R2>> value2, Function3<? super T, ? super R1, ? super R2, ? extends MonadicValue<R3>> value3, Function4<? super T, ? super R1, ? super R2, ? super R3, Boolean> filterFunction, Function4<? super T, ? super R1, ? super R2, ? super R3, ? extends R> yieldingFunction) { return (Eval<R>)MonadicValue.super.forEach4(value1, value2, value3, filterFunction, yieldingFunction); }
@Override public boolean hasNext() { return !complete[0] && fold(p->true,()->false); }
default X orElseUse(X opt){ if(isPresent()) return (X)this; return opt; } default X orElseUse(Supplier<X> opt){
@Override default <T2, R1, R2, R> Option<R> forEach3(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends MonadicValue<R2>> value2, Function3<? super T, ? super R1, ? super R2, ? extends R> yieldingFunction) { return (Option<R>)MonadicValue.super.forEach3(value1, value2, yieldingFunction); }
@Override default <R1, R> Option<R> forEach2(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, Boolean> filterFunction, BiFunction<? super T, ? super R1, ? extends R> yieldingFunction) { return (Option<R>)MonadicValue.super.forEach2(value1, filterFunction, yieldingFunction); }
@Override default Maybe<RT> notNull() { return (Maybe<RT>)Filters.super.notNull(); } /*
@Override default Maybe<RT> filterNot(Predicate<? super RT> predicate) { return (Maybe<RT>)Filters.super.filterNot(predicate); } /* (non-Javadoc)
@Override default <T2, R1, R2, R3, R> Option<R> forEach4(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends MonadicValue<R2>> value2, Function3<? super T, ? super R1, ? super R2, ? extends MonadicValue<R3>> value3, Function4<? super T, ? super R1, ? super R2, ? super R3, ? extends R> yieldingFunction) { return (Option<R>)MonadicValue.super.forEach4(value1, value2, value3, yieldingFunction); }
@Override public T next() { complete[0]=true; return fold(p->p,()->null); } };
@Override default <T2, R1, R2, R> Eval<R> forEach3(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends MonadicValue<R2>> value2, Function3<? super T, ? super R1, ? super R2, Boolean> filterFunction, Function3<? super T, ? super R1, ? super R2, ? extends R> yieldingFunction) { return (Eval<R>)MonadicValue.super.forEach3(value1, value2, filterFunction, yieldingFunction); }
@Override default <R1, R> Eval<R> forEach2(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends R> yieldingFunction) { return (Eval<R>)MonadicValue.super.forEach2(value1, yieldingFunction); }
@Override default <T2, R1, R2, R> Option<R> forEach3(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends MonadicValue<R2>> value2, Function3<? super T, ? super R1, ? super R2, Boolean> filterFunction, Function3<? super T, ? super R1, ? super R2, ? extends R> yieldingFunction) { return (Option<R>)MonadicValue.super.forEach3(value1, value2, filterFunction, yieldingFunction); }
@Override public <R1, R> Future<R> forEach2(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends R> yieldingFunction) { return (Future<R>)MonadicValue.super.forEach2(value1, yieldingFunction); }
@Override public <T2, R1, R2, R> Future<R> forEach3(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, ? extends MonadicValue<R2>> value2, Function3<? super T, ? super R1, ? super R2, ? extends R> yieldingFunction) { return (Future<R>)MonadicValue.super.forEach3(value1, value2, yieldingFunction); }
@Override public <R1, R> Future<R> forEach2(Function<? super T, ? extends MonadicValue<R1>> value1, BiFunction<? super T, ? super R1, Boolean> filterFunction, BiFunction<? super T, ? super R1, ? extends R> yieldingFunction) { return (Future<R>)MonadicValue.super.forEach2(value1, filterFunction, yieldingFunction); }