T - public interface Eval<T> extends java.util.function.Supplier<T>, MonadicValue<T>, Functor<T>, Filterable<T>, Applicativable<T>, Matchable.ValueAndOptionalMatcher<T>
public void odd(){
System.out.println(even(Eval.now(200000)).get());
}
public Eval<String> odd(Eval<Integer> n ) {
return n.flatMap(x->even(Eval.now(x-1)));
}
public Eval<String> even(Eval<Integer> n ) {
return n.flatMap(x->{
return x<=0 ? Eval.now("done") : odd(Eval.now(x-1));
});
}
| Modifier and Type | Interface and Description |
|---|---|
static class |
Eval.Module |
Applicativable.Applicatives, Applicativable.SemigroupApplyer<T>Value.ValueImpl<T>Convertable.SupplierToConvertable<T>| Modifier and Type | Method and Description |
|---|---|
static <T,R> Eval<R> |
accumulate(CollectionX<Eval<T>> maybes,
java.util.function.Function<? super T,R> mapper,
Semigroup<R> reducer) |
static <T,R> Eval<R> |
accumulate(CollectionX<Eval<T>> evals,
Reducer<R> reducer) |
static <T> Eval<T> |
accumulate(CollectionX<Eval<T>> maybes,
Semigroup<T> reducer) |
static <T> Eval<T> |
always(java.util.function.Supplier<T> value) |
default Eval<java.util.concurrent.CompletableFuture<T>> |
asyncAlways() |
default Eval<java.util.concurrent.CompletableFuture<T>> |
asyncAlways(java.util.concurrent.Executor ex) |
default Eval<java.util.concurrent.CompletableFuture<T>> |
asyncLater() |
default Eval<java.util.concurrent.CompletableFuture<T>> |
asyncLater(java.util.concurrent.Executor ex) |
default Eval<java.util.concurrent.CompletableFuture<T>> |
asyncNow() |
default Eval<java.util.concurrent.CompletableFuture<T>> |
asyncNow(java.util.concurrent.Executor ex) |
default <U> Eval<U> |
cast(java.lang.Class<? extends U> type)
Cast all elements in a stream to a given type, possibly throwing a
ClassCastException. |
default <R> Eval<R> |
coflatMap(java.util.function.Function<? super MonadicValue<T>,R> mapper) |
default Eval<T> |
combine(Monoid<T> monoid,
Eval<? extends T> v2) |
default Maybe<T> |
filter(java.util.function.Predicate<? super T> pred)
Keep only elements for which the supplied predicates hold
e.g.
|
default Maybe<T> |
filterNot(java.util.function.Predicate<? super T> fn)
Remove any elements for which the predicate holds (inverse operation to filter)
e.g.
|
<R> Eval<R> |
flatMap(java.util.function.Function<? super T,? extends Eval<? extends R>> mapper) |
static <T> Eval<T> |
fromIterable(java.lang.Iterable<T> iterable) |
T |
get() |
static <T> Eval<T> |
later(java.util.function.Supplier<T> value) |
<R> Eval<R> |
map(java.util.function.Function<? super T,? extends R> mapper)
Transform this functor using the supplied transformation function
|
static <R> Eval<R> |
narrow(Eval<? extends R> broad) |
default Eval<MonadicValue<T>> |
nest() |
default Maybe<T> |
notNull()
Filter elements retaining only values which are not null
|
static <T> Eval<T> |
now(T value) |
default <U> Maybe<U> |
ofType(java.lang.Class<? extends U> type)
Keep only those elements in a stream that are of a given type.
|
default Eval<T> |
peek(java.util.function.Consumer<? super T> c)
Peek at the current value of this Functor, without transforming it
|
static <T> Eval<ListX<T>> |
sequence(CollectionX<Eval<T>> evals) |
default PVectorX<java.util.function.Function<java.lang.Object,java.lang.Object>> |
steps() |
default <R> Eval<R> |
trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
Performs a map operation that can call a recursive method without running out of stack space
|
<T> Eval<T> |
unit(T unit) |
anyM, isPresentap, ap, ap1, ap2, ap3, ap4, ap5fold, fold, generate, iterate, mapReduce, mkString, newSubscriber, of, stream, subscribe, test, toDequeX, toEvalAlways, toEvalLater, toEvalNow, toFeatureToggle, toFutureStream, toFutureStream, toIor, toLazyImmutable, toListX, toMaybe, toMutable, toPBagX, toPOrderedSetX, toPQueueX, toPSetX, toPStackX, toPVectorX, toQueueX, toSetX, toSimpleReact, toSimpleReact, toSortedSetX, toTry, toTry, toTry, toXor, toXor, unapply, visitendsWith, endsWithIterable, findAny, findFirst, firstValue, foldable, foldRight, foldRight, foldRight, foldRightMapToType, get, groupBy, headAndTail, join, join, join, mapReduce, print, print, printErr, printOut, reduce, reduce, reduce, reduce, reduce, reduce, reduce, schedule, scheduleFixedDelay, scheduleFixedRate, single, single, singleOptional, startsWith, startsWithIterable, toConcurrentLazyCollection, toConcurrentLazyStreamable, toLazyCollection, validate, visit, visit, xMatchfromSupplier, iterator, orElse, orElseGet, orElseThrow, toAtomicReference, toCompletableFuture, toCompletableFutureAsync, toCompletableFutureAsync, toFutureW, toList, toOptional, toOptionalAtomicReference, toStreamiterator, toOptional, visitmatchesstatic <T> Eval<T> fromIterable(java.lang.Iterable<T> iterable)
static <T> Eval<T> now(T value)
static <T> Eval<T> later(java.util.function.Supplier<T> value)
static <T> Eval<T> always(java.util.function.Supplier<T> value)
static <T> Eval<ListX<T>> sequence(CollectionX<Eval<T>> evals)
static <T,R> Eval<R> accumulate(CollectionX<Eval<T>> evals, Reducer<R> reducer)
static <T,R> Eval<R> accumulate(CollectionX<Eval<T>> maybes, java.util.function.Function<? super T,R> mapper, Semigroup<R> reducer)
static <T> Eval<T> accumulate(CollectionX<Eval<T>> maybes, Semigroup<T> reducer)
<T> Eval<T> unit(T unit)
<R> Eval<R> map(java.util.function.Function<? super T,? extends R> mapper)
Functor
of(1,2,3).map(i->i*2)
//[2,4,6]
map in interface ConvertableFunctor<T>map in interface Functor<T>map in interface MonadicValue<T>mapper - Transformation function<R> Eval<R> flatMap(java.util.function.Function<? super T,? extends Eval<? extends R>> mapper)
default PVectorX<java.util.function.Function<java.lang.Object,java.lang.Object>> steps()
default <R> Eval<R> coflatMap(java.util.function.Function<? super MonadicValue<T>,R> mapper)
coflatMap in interface MonadicValue<T>default Eval<MonadicValue<T>> nest()
nest in interface MonadicValue<T>T get()
get in interface Convertable<T>get in interface java.util.function.Supplier<T>default <U> Maybe<U> ofType(java.lang.Class<? extends U> type)
Filterable
// (1, 2, 3) ReactiveSeq.of(1, "a", 2, "b",3).ofType(Integer.class)
ofType in interface Filterable<T>default Maybe<T> filterNot(java.util.function.Predicate<? super T> fn)
Filterable
of(1,2,3).filter(i->i>2);
//[1,2]
filterNot in interface Filterable<T>fn - to filter elements by, retaining matchesdefault Maybe<T> notNull()
Filterable
of(1,2,null,4).nonNull();
//[1,2,4]
notNull in interface Filterable<T>default Maybe<T> filter(java.util.function.Predicate<? super T> pred)
Filterable
of(1,2,3).filter(i->i>2);
//[3]
filter in interface Filterable<T>pred - to filter elements by, retaining matchesdefault <U> Eval<U> cast(java.lang.Class<? extends U> type)
FunctorClassCastException.
// ClassCastException ReactiveSeq.of(1, "a", 2, "b", 3).cast(Integer.class)default Eval<T> peek(java.util.function.Consumer<? super T> c)
Functor
of(1,2,3).map(System.out::println)
1
2
3
default <R> Eval<R> trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
Functor
ReactiveSeq.of(10,20,30,40)
.trampoline(i-> fibonacci(i))
.forEach(System.out::println);
Trampoline<Long> fibonacci(int i){
return fibonacci(i,1,0);
}
Trampoline<Long> fibonacci(int n, long a, long b) {
return n == 0 ? Trampoline.done(b) : Trampoline.more( ()->fibonacci(n-1, a+b, a));
}
55
6765
832040
102334155
ReactiveSeq.of(10_000,200_000,3_000_000,40_000_000)
.trampoline(i-> fibonacci(i))
.forEach(System.out::println);
completes successfully
trampoline in interface Functor<T>default Eval<java.util.concurrent.CompletableFuture<T>> asyncNow(java.util.concurrent.Executor ex)
default Eval<java.util.concurrent.CompletableFuture<T>> asyncLater(java.util.concurrent.Executor ex)
default Eval<java.util.concurrent.CompletableFuture<T>> asyncAlways(java.util.concurrent.Executor ex)