W
- Witness typeT
- Data typepublic class Active<W,T> extends java.lang.Object implements Filters<T>, Transformable<T>, To<Active<W,T>>
Active<list,Integer> active = Active.of(ListX.of(1,2,3),ListX.Instances.definitions());
Active<list,Integer> doubled = active.map(i->i*2);
Active<list,Integer> doubledPlusOne = doubled.flatMap(i->ListX.of(i+1));
Modifier and Type | Class and Description |
---|---|
static interface |
Active.Converter<S> |
class |
Active.Plus |
class |
Active.Unfolds |
Constructor and Description |
---|
Active() |
Modifier and Type | Method and Description |
---|---|
boolean |
allMatch(java.util.function.Predicate<? super T> pred) |
boolean |
anyMatch(java.util.function.Predicate<? super T> pred) |
<C,R> Active<W,R> |
ap(C c,
java.util.function.Function<? super C,? extends Higher<W,? extends java.util.function.Function<T,R>>> fn) |
<R> Active<W,R> |
ap(Higher<W,? extends java.util.function.Function<T,R>> fn) |
<U> Active<W,U> |
cast(java.lang.Class<? extends U> type)
Cast all elements in a reactiveStream to a given type, possibly throwing a
ClassCastException . |
<W2> Product<W,W2,T> |
concat(Active<W2,T> active) |
<C,R> cyclops.typeclasses.Active.NarrowedApplicative<C,R> |
concreteAp(Kleisli<W,C,java.util.function.Function<T,R>> widen) |
<S,R> Active.Converter<S> |
concreteConversion(java.util.function.Function<? super Higher<W,T>,? extends S> narrow)
Convert this Active to a new type via the underlying concrete type
e.g.
|
<C,R> cyclops.typeclasses.Active.NarrowedFlatMap<C,R> |
concreteFlatMap(Kleisli<W,C,R> widen)
Use concreteFlatMap to access a flatMap operator that works with the concrete type (rather than the higher kind encoding)
e.g.
|
<C> cyclops.typeclasses.Active.Narrowed<C> |
concreteMonoid(Kleisli<W,C,T> widen,
Cokleisli<W,T,C> narrow) |
<C,R> cyclops.typeclasses.Active.NarrowedTailRec<C,R> |
concreteTailRec(Kleisli<W,C,Xor<T,R>> widen) |
<S,R> Active<W,R> |
custom(java.util.function.Function<? super Higher<W,T>,? extends S> narrow,
java.util.function.Function<? super S,? extends Higher<W,R>> fn)
Perform a custom operation
|
Active<W,T> |
filter(java.util.function.Predicate<? super T> predicate)
Keep only elements for which the supplied predicates hold
e.g.
|
Active<W,T> |
filterNot(java.util.function.Predicate<? super T> predicate)
Remove any elements for which the predicate holds (inverse operation to filter)
e.g.
|
<R> Active<W,R> |
flatMap(java.util.function.Function<? super T,? extends Higher<W,R>> fn) |
<R> Active<W,R> |
flatMapA(java.util.function.Function<? super T,? extends Active<W,R>> fn) |
<C2,T> Higher<C2,Active<W,T>> |
flatSequenceA(Applicative<C2> applicative,
Active<W,Higher<C2,Active<W,T>>> fgfa) |
<W2,R> Higher<W2,Higher<W,R>> |
flatTraverse(Applicative<W2> applicative,
java.util.function.Function<? super T,? extends Higher<W2,Higher<W,R>>> f) |
<C2,R> Higher<C2,Active<W,R>> |
flatTraverseA(Applicative<C2> applicative,
java.util.function.Function<? super T,? extends Higher<C2,Active<W,R>>> f) |
T |
foldLeft(Monoid<T> monoid) |
T |
foldLeft(T identity,
java.util.function.BinaryOperator<T> semigroup) |
<R> R |
foldMap(Monoid<R> mb,
java.util.function.Function<? super T,? extends R> fn) |
T |
foldRight(Monoid<T> monoid) |
T |
foldRight(T identity,
java.util.function.BinaryOperator<T> semigroup) |
<R1,R> Active<W,R> |
forEach2(java.util.function.Function<? super T,? extends Higher<W,R1>> value1,
java.util.function.BiFunction<? super T,? super R1,? extends R> yieldingFunction) |
<R1,R> Maybe<Active<W,R>> |
forEach2(java.util.function.Function<? super T,? extends Higher<W,R1>> value1,
java.util.function.BiFunction<? super T,? super R1,java.lang.Boolean> filterFunction,
java.util.function.BiFunction<? super T,? super R1,? extends R> yieldingFunction) |
<T2,R1,R2,R> |
forEach3(java.util.function.Function<? super T,? extends Higher<W,R1>> value1,
java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2,
Fn3<? super T,? super R1,? super R2,? extends R> yieldingFunction) |
<T2,R1,R2,R> |
forEach3(java.util.function.Function<? super T,? extends Higher<W,R1>> value1,
java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2,
Fn3<? super T,? super R1,? super R2,java.lang.Boolean> filterFunction,
Fn3<? super T,? super R1,? super R2,? extends R> yieldingFunction) |
<T2,R1,R2,R3,R> |
forEach4(java.util.function.Function<? super T,? extends Higher<W,R1>> value1,
java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2,
Fn3<? super T,? super R1,? super R2,? extends Higher<W,R3>> value3,
Fn4<? super T,? super R1,? super R2,? super R3,? extends R> yieldingFunction) |
<T2,R1,R2,R3,R> |
forEach4(java.util.function.Function<? super T,? extends Higher<W,R1>> value1,
java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2,
Fn3<? super T,? super R1,? super R2,? extends Higher<W,R3>> value3,
Fn4<? super T,? super R1,? super R2,? super R3,java.lang.Boolean> filterFunction,
Fn4<? super T,? super R1,? super R2,? super R3,? extends R> yieldingFunction) |
Higher<W,T> |
getActive() |
T |
getAt(int index) |
T |
intercalate(Monoid<T> monoid,
T value) |
<T2,R> Eval<Active<W,R>> |
lazyZip(Eval<Higher<W,T2>> lazy,
java.util.function.BiFunction<? super T,? super T2,? extends R> fn) |
<T2,R> Eval<Active<W,R>> |
lazyZipA(Eval<Active<W,T2>> lazy,
java.util.function.BiFunction<? super T,? super T2,? extends R> fn) |
<R> java.util.function.Function<Active<W,T>,Active<W,R>> |
lift(java.util.function.Function<? super T,? extends R> fn) |
<R> Active<W,R> |
map(java.util.function.Function<? super T,? extends R> fn)
Transform this functor using the supplied transformation function
|
<W2> Active<W2,T> |
mapK(FunctionK<W,W2,T> fn) |
<R> Active<W,R> |
mapWithIndex(java.util.function.BiFunction<? super T,java.lang.Long,? extends R> f) |
Active<W,T> |
notNull()
Filter elements retaining only values which are not null
|
static <C,W,T> Active<W,T> |
of(java.util.function.Function<? super C,? extends Higher<W,T>> single,
C c,
InstanceDefinitions<W> def1) |
static <W,T> Active<W,T> |
of(Higher<W,T> single,
InstanceDefinitions<W> def1) |
static <W,T> Active<W,T> |
of(InstanceDefinitions<W> def1,
T value) |
<U> Active<W,U> |
ofType(java.lang.Class<? extends U> type)
Keep only those elements in a reactiveStream that are of a given type.
|
Active<W,T> |
peek(java.util.function.Consumer<? super T> fn)
Peek at the current value of this Transformable, without transforming it
|
Maybe<Active.Plus> |
plus() |
Active.Plus |
plus(MonadPlus<W> plus) |
Active<W,T> |
plus(SemigroupK<W,T> semigroupK,
Active<W,T> add) |
Active<W,T> |
plus(SemigroupK<W,T> semigroupK,
Higher<W,T> add) |
Active.Plus |
plusUnsafe()
Deprecated.
|
<R> Active<W,R> |
retry(java.util.function.Function<? super T,? extends R> fn)
Retry a transformation if it fails.
|
<R> Active<W,R> |
retry(java.util.function.Function<? super T,? extends R> fn,
int retries,
long delay,
java.util.concurrent.TimeUnit timeUnit)
Retry a transformation if it fails.
|
Active<W,T> |
reverse() |
<C2,T> Higher<C2,Active<W,T>> |
sequenceA(Applicative<C2> applicative,
Active<W,Higher<C2,T>> ds) |
java.lang.String |
show() |
long |
size() |
ReactiveSeq<T> |
stream() |
<R> Active<W,R> |
tailRec(T initial,
java.util.function.Function<? super T,? extends Higher<W,? extends Xor<T,R>>> fn) |
<R> Active<W,R> |
tailRecA(T initial,
java.util.function.Function<? super T,? extends Active<W,? extends Xor<T,R>>> fn) |
ListX<T> |
toListX() |
java.lang.String |
toString() |
<R> Active<W,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
|
<C2,R> Higher<C2,Active<W,R>> |
traverseA(Applicative<C2> applicative,
java.util.function.Function<? super T,? extends Higher<C2,R>> fn) |
static <W,T,C2,R> Higher<C2,Active<W,R>> |
traverseA(Applicative<C2> applicative,
java.util.function.Function<? super T,? extends Higher<C2,R>> fn,
Active<W,T> n) |
Maybe<Active.Unfolds> |
unfolds() |
Active.Unfolds |
unfolds(Unfoldable<W> unfoldable) |
Active.Unfolds |
unfoldsDefault() |
<R> Active<W,R> |
unit(R value) |
<C,R> R |
visit(java.util.function.Function<? super Higher<W,T>,? extends C> narrow,
java.util.function.Function<? super C,? extends R> visitor) |
<R> R |
visit(java.util.function.Function<? super Higher<W,T>,? extends R> visitor) |
<R> R |
visitA(java.util.function.Function<? super Active<W,T>,? extends R> visitor) |
Active<W,org.jooq.lambda.tuple.Tuple2<T,T>> |
zip(Active<W,T> p2) |
Active<W,org.jooq.lambda.tuple.Tuple3<T,T,T>> |
zip(Active<W,T> p2,
Active<W,T> p3) |
<R> Active<W,R> |
zip(Active<W,T> p2,
Active<W,T> p3,
Fn3<? super T,? super T,? super T,? extends R> zipper) |
<R> Active<W,R> |
zip(Active<W,T> p2,
java.util.function.BiFunction<? super T,? super T,? extends R> zipper) |
<R> Active<W,org.jooq.lambda.tuple.Tuple2<T,R>> |
zip(Higher<W,R> fb) |
<T2,R> Active<W,R> |
zip(Higher<W,T2> fb,
java.util.function.BiFunction<? super T,? super T2,? extends R> f) |
<W2,T2,R> Active<W,R> |
zipWith(Active<W2,T2> a,
java.util.function.BiFunction<? super T,? super Maybe<T2>,? extends R> f) |
<W2,T2,R> Active<W,R> |
zipWith(Foldable<W2> foldable,
Higher<W2,T2> a,
java.util.function.BiFunction<? super T,? super Maybe<T2>,? extends R> f) |
<R> Active<W,org.jooq.lambda.tuple.Tuple2<T,java.lang.Long>> |
zipWithIndex() |
public static <W,T> Active<W,T> of(Higher<W,T> single, InstanceDefinitions<W> def1)
public static <C,W,T> Active<W,T> of(java.util.function.Function<? super C,? extends Higher<W,T>> single, C c, InstanceDefinitions<W> def1)
public static <W,T> Active<W,T> of(InstanceDefinitions<W> def1, T value)
public <S,R> Active<W,R> custom(java.util.function.Function<? super Higher<W,T>,? extends S> narrow, java.util.function.Function<? super S,? extends Higher<W,R>> fn)
Active<list,Integer> active = Active.of(ListX.of(1,2,3), ListX.Instances.definitions());
Active<list, ListX<Integer>> grouped = active.custom(ListX::narrowK, l -> l.grouped(10));
S
- Concrete typeR
- Return typenarrow
- Function that narrows Higher Kinded encoding to it's concrete typefn
- Transformation functionpublic <S,R> Active.Converter<S> concreteConversion(java.util.function.Function<? super Higher<W,T>,? extends S> narrow)
Active<list,Integer> active = Active.of(ListX.of(1,2,3), ListX.Instances.definitions());
We can convert it to a set via concreteConversion
SetX<Integer> set = active.concreteConversion(ListX.<Integer>kindCokleisli())
.to(ListX::toSetX());
Most cyclops-react types provide kindCokleisli implementations that convert a Higher Kinded encoding of the type
back to the concrete typeS
- Concrete typeR
- Return typenarrow
- Narrowing function (Cokleisli) to a concrete typepublic <C,R> R visit(java.util.function.Function<? super Higher<W,T>,? extends C> narrow, java.util.function.Function<? super C,? extends R> visitor)
public Active<W,T> filter(java.util.function.Predicate<? super T> predicate)
Filters
of(1,2,3).filter(i->i>2);
//[3]
public <R> Active<W,R> map(java.util.function.Function<? super T,? extends R> fn)
Transformable
of(1,2,3).map(i->i*2)
//[2,4,6]
map
in interface Transformable<T>
fn
- Transformation functionpublic <R> Active<W,R> mapWithIndex(java.util.function.BiFunction<? super T,java.lang.Long,? extends R> f)
public boolean anyMatch(java.util.function.Predicate<? super T> pred)
public boolean allMatch(java.util.function.Predicate<? super T> pred)
public T getAt(int index)
public ReactiveSeq<T> stream()
public long size()
public <W2,T2,R> Active<W,R> zipWith(Active<W2,T2> a, java.util.function.BiFunction<? super T,? super Maybe<T2>,? extends R> f)
public <W2,T2,R> Active<W,R> zipWith(Foldable<W2> foldable, Higher<W2,T2> a, java.util.function.BiFunction<? super T,? super Maybe<T2>,? extends R> f)
public <C> cyclops.typeclasses.Active.Narrowed<C> concreteMonoid(Kleisli<W,C,T> widen, Cokleisli<W,T,C> narrow)
public <C,R> cyclops.typeclasses.Active.NarrowedFlatMap<C,R> concreteFlatMap(Kleisli<W,C,R> widen)
Active<vector,Integer> vector = Vectors.allTypeclasses(Vector.of(1,2,3));
vector.concreteFlatMap(Vectors.kindKleisli())
.flatMap(i->Vector.of(1,2,3)); //flatMap accepts Vector rather than Higher<vector,T>
Note this is not typically needed for cyclops-react typespublic <C,R> cyclops.typeclasses.Active.NarrowedApplicative<C,R> concreteAp(Kleisli<W,C,java.util.function.Function<T,R>> widen)
public <C,R> cyclops.typeclasses.Active.NarrowedTailRec<C,R> concreteTailRec(Kleisli<W,C,Xor<T,R>> widen)
public <T2,R> Active<W,R> zip(Higher<W,T2> fb, java.util.function.BiFunction<? super T,? super T2,? extends R> f)
public <T2,R> Eval<Active<W,R>> lazyZip(Eval<Higher<W,T2>> lazy, java.util.function.BiFunction<? super T,? super T2,? extends R> fn)
public <T2,R> Eval<Active<W,R>> lazyZipA(Eval<Active<W,T2>> lazy, java.util.function.BiFunction<? super T,? super T2,? extends R> fn)
public Active<W,T> peek(java.util.function.Consumer<? super T> fn)
Transformable
of(1,2,3).map(System.out::println)
1
2
3
peek
in interface Transformable<T>
fn
- Consumer that recieves each element from this Transformablepublic <R> java.util.function.Function<Active<W,T>,Active<W,R>> lift(java.util.function.Function<? super T,? extends R> fn)
public <R> Active<W,R> zip(Active<W,T> p2, java.util.function.BiFunction<? super T,? super T,? extends R> zipper)
public <R> Active<W,R> zip(Active<W,T> p2, Active<W,T> p3, Fn3<? super T,? super T,? super T,? extends R> zipper)
public <R> Active<W,R> flatMap(java.util.function.Function<? super T,? extends Higher<W,R>> fn)
public <R> Active<W,R> flatMapA(java.util.function.Function<? super T,? extends Active<W,R>> fn)
public <C,R> Active<W,R> ap(C c, java.util.function.Function<? super C,? extends Higher<W,? extends java.util.function.Function<T,R>>> fn)
public Active.Unfolds unfolds(Unfoldable<W> unfoldable)
public Active.Plus plus(MonadPlus<W> plus)
public Active.Unfolds unfoldsDefault()
@Deprecated public Active.Plus plusUnsafe()
public Maybe<Active.Unfolds> unfolds()
public Maybe<Active.Plus> plus()
public <R> Active<W,R> tailRec(T initial, java.util.function.Function<? super T,? extends Higher<W,? extends Xor<T,R>>> fn)
public <R> Active<W,R> tailRecA(T initial, java.util.function.Function<? super T,? extends Active<W,? extends Xor<T,R>>> fn)
public <W2,R> Higher<W2,Higher<W,R>> flatTraverse(Applicative<W2> applicative, java.util.function.Function<? super T,? extends Higher<W2,Higher<W,R>>> f)
public <C2,R> Higher<C2,Active<W,R>> traverseA(Applicative<C2> applicative, java.util.function.Function<? super T,? extends Higher<C2,R>> fn)
public static <W,T,C2,R> Higher<C2,Active<W,R>> traverseA(Applicative<C2> applicative, java.util.function.Function<? super T,? extends Higher<C2,R>> fn, Active<W,T> n)
public <C2,T> Higher<C2,Active<W,T>> sequenceA(Applicative<C2> applicative, Active<W,Higher<C2,T>> ds)
public <C2,R> Higher<C2,Active<W,R>> flatTraverseA(Applicative<C2> applicative, java.util.function.Function<? super T,? extends Higher<C2,Active<W,R>>> f)
public <C2,T> Higher<C2,Active<W,T>> flatSequenceA(Applicative<C2> applicative, Active<W,Higher<C2,Active<W,T>>> fgfa)
public <U> Active<W,U> cast(java.lang.Class<? extends U> type)
Transformable
ClassCastException
.
// ClassCastException ReactiveSeq.of(1, "a", 2, "b", 3).cast(Integer.class)cast
in interface Transformable<T>
public <U> Active<W,U> ofType(java.lang.Class<? extends U> type)
Filters
// (1, 2, 3) ReactiveSeq.of(1, "a", 2, "b",3).ofType(Integer.class)
public Active<W,T> filterNot(java.util.function.Predicate<? super T> predicate)
Filters
of(1,2,3).filter(i->i>2);
//[1,2]
public Active<W,T> notNull()
Filters
of(1,2,null,4).nonNull();
//[1,2,4]
public <R> Active<W,R> trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
Transformable
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 Transformable<T>
mapper
- TCO Transformation functionpublic <R> Active<W,R> retry(java.util.function.Function<? super T,? extends R> fn)
Transformable
given(serviceMock.applyHKT(anyInt())).willThrow(
new RuntimeException(new SocketException("First")),
new RuntimeException(new IOException("Second"))).willReturn(
"42");
String result = ReactiveSeq.of( 1, 2, 3)
.retry(serviceMock)
.firstValue();
//result = 42
retry
in interface Transformable<T>
fn
- Function to retry if failspublic <R> Active<W,R> retry(java.util.function.Function<? super T,? extends R> fn, int retries, long delay, java.util.concurrent.TimeUnit timeUnit)
Transformable
given(serviceMock.applyHKT(anyInt())).willThrow(
new RuntimeException(new SocketException("First")),
new RuntimeException(new IOException("Second"))).willReturn(
"42");
String result = ReactiveSeq.of( 1, 2, 3)
.retry(serviceMock, 7, 2, TimeUnit.SECONDS)
.firstValue();
//result = 42
retry
in interface Transformable<T>
fn
- Function to retry if failsretries
- Number of retriesdelay
- Delay in TimeUnitstimeUnit
- TimeUnit to use for delaypublic <T2,R1,R2,R3,R> Active<W,R> forEach4(java.util.function.Function<? super T,? extends Higher<W,R1>> value1, java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2, Fn3<? super T,? super R1,? super R2,? extends Higher<W,R3>> value3, Fn4<? super T,? super R1,? super R2,? super R3,? extends R> yieldingFunction)
public <T2,R1,R2,R3,R> Maybe<Active<W,R>> forEach4(java.util.function.Function<? super T,? extends Higher<W,R1>> value1, java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2, Fn3<? super T,? super R1,? super R2,? extends Higher<W,R3>> value3, Fn4<? super T,? super R1,? super R2,? super R3,java.lang.Boolean> filterFunction, Fn4<? super T,? super R1,? super R2,? super R3,? extends R> yieldingFunction)
public <T2,R1,R2,R> Active<W,R> forEach3(java.util.function.Function<? super T,? extends Higher<W,R1>> value1, java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2, Fn3<? super T,? super R1,? super R2,? extends R> yieldingFunction)
public <T2,R1,R2,R> Maybe<Active<W,R>> forEach3(java.util.function.Function<? super T,? extends Higher<W,R1>> value1, java.util.function.BiFunction<? super T,? super R1,? extends Higher<W,R2>> value2, Fn3<? super T,? super R1,? super R2,java.lang.Boolean> filterFunction, Fn3<? super T,? super R1,? super R2,? extends R> yieldingFunction)
public <R1,R> Active<W,R> forEach2(java.util.function.Function<? super T,? extends Higher<W,R1>> value1, java.util.function.BiFunction<? super T,? super R1,? extends R> yieldingFunction)
public <R1,R> Maybe<Active<W,R>> forEach2(java.util.function.Function<? super T,? extends Higher<W,R1>> value1, java.util.function.BiFunction<? super T,? super R1,java.lang.Boolean> filterFunction, java.util.function.BiFunction<? super T,? super R1,? extends R> yieldingFunction)
public java.lang.String show()
public java.lang.String toString()
toString
in class java.lang.Object