public static class Spouts.Instances
extends java.lang.Object
Constructor and Description |
---|
Instances() |
Modifier and Type | Method and Description |
---|---|
static InstanceDefinitions<Witness.reactiveSeq> |
definitions(java.util.concurrent.Executor ex) |
static <T,R> Foldable<Witness.reactiveSeq> |
foldable()
int sum = Lists.foldable()
.foldLeft(0, (a,b)->a+b, ReactiveSeq.of(1,2,3,4));
//10
|
static <T,R> Functor<Witness.reactiveSeq> |
functor()
Transform a list, mulitplying every element by 2
|
static <T,R> Monad<Witness.reactiveSeq> |
monad()
import static com.aol.cyclops2.hkt.jdk.ReactiveSeq.widen;
ReactiveSeq<Integer> list = Lists.monad()
.flatMap(i->widen(ReactiveSeq.range(0,i)), widen(Arrays.asList(1,2,3)))
.convert(ReactiveSeq::narrowK3);
|
static <T> MonadPlus<Witness.reactiveSeq> |
monadPlus()
ReactiveSeq<Integer> list = Lists.<Integer>monadPlus()
.plus(ReactiveSeq.widen(Arrays.asList()), ReactiveSeq.widen(Arrays.asList(10)))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList(10))
|
static <T> MonadPlus<Witness.reactiveSeq> |
monadPlus(Monoid<ReactiveSeq<T>> m)
Monoid<ReactiveSeq<Integer>> m = Monoid.of(ReactiveSeq.widen(Arrays.asList()), (a,b)->a.isEmpty() ? b : a);
ReactiveSeq<Integer> list = Lists.<Integer>monadPlus(m)
.plus(ReactiveSeq.widen(Arrays.asList(5)), ReactiveSeq.widen(Arrays.asList(10)))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList(5))
|
static <T,R> MonadRec<Witness.reactiveSeq> |
monadRec(java.util.concurrent.Executor ex) |
static <T,R> MonadZero<Witness.reactiveSeq> |
monadZero()
ReactiveSeq<String> list = Lists.unit()
.unit("hello")
.transform(h->Lists.monadZero().filter((String t)->t.startsWith("he"), h))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList("hello"));
|
static <T> ReactiveSeq<T> |
narrow(Higher<Witness.reactiveSeq,T> completableList)
Convert the HigherKindedType definition for a List into
|
static <C2,T> Traverse<Witness.reactiveSeq> |
traverse() |
static Unfoldable<Witness.reactiveSeq> |
unfoldable(java.util.concurrent.Executor ex) |
static <T> Pure<Witness.reactiveSeq> |
unit()
ReactiveSeq<String> list = Lists.unit()
.unit("hello")
.convert(ReactiveSeq::narrowK3);
//Arrays.asList("hello"))
|
static <C2,T> Higher<C2,Higher<Witness.reactiveSeq,T>> |
widen2(Higher<C2,ReactiveSeq<T>> flux)
Widen a ReactiveSeq nest inside another HKT encoded type
|
static <T,R> Applicative<Witness.reactiveSeq> |
zippingApplicative()
import static com.aol.cyclops2.hkt.jdk.ReactiveSeq.widen;
import static com.aol.cyclops2.util.function.Lambda.l1;
import static java.util.Arrays.asList;
Lists.zippingApplicative()
.ap(widen(asList(l1(this::multiplyByTwo))),widen(asList(1,2,3)));
//[2,4,6]
|
public static InstanceDefinitions<Witness.reactiveSeq> definitions(java.util.concurrent.Executor ex)
public static Unfoldable<Witness.reactiveSeq> unfoldable(java.util.concurrent.Executor ex)
public static <T,R> Functor<Witness.reactiveSeq> functor()
ReactiveSeq<Integer> list = Lists.functor().map(i->i*2, ReactiveSeq.widen(Arrays.asList(1,2,3));
//[2,4,6]
An example fluent api working with Lists
ReactiveSeq<Integer> list = ReactiveSeq.Instances.unit()
.unit("hello")
.transform(h->Lists.functor().map((String v) ->v.length(), h))
.convert(ReactiveSeq::narrowK3);
public static <T> Pure<Witness.reactiveSeq> unit()
ReactiveSeq<String> list = Lists.unit()
.unit("hello")
.convert(ReactiveSeq::narrowK3);
//Arrays.asList("hello"))
public static <T,R> Applicative<Witness.reactiveSeq> zippingApplicative()
import static com.aol.cyclops2.hkt.jdk.ReactiveSeq.widen;
import static com.aol.cyclops2.util.function.Lambda.l1;
import static java.util.Arrays.asList;
Lists.zippingApplicative()
.ap(widen(asList(l1(this::multiplyByTwo))),widen(asList(1,2,3)));
//[2,4,6]
Example fluent API
ReactiveSeq<Function<Integer,Integer>> listFn =Lists.unit()
.unit(Lambda.l1((Integer i) ->i*2))
.convert(ReactiveSeq::narrowK3);
ReactiveSeq<Integer> list = Lists.unit()
.unit("hello")
.transform(h->Lists.functor().map((String v) ->v.length(), h))
.transform(h->Lists.zippingApplicative().ap(listFn, h))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList("hello".length()*2))
public static <T,R> Monad<Witness.reactiveSeq> monad()
import static com.aol.cyclops2.hkt.jdk.ReactiveSeq.widen;
ReactiveSeq<Integer> list = Lists.monad()
.flatMap(i->widen(ReactiveSeq.range(0,i)), widen(Arrays.asList(1,2,3)))
.convert(ReactiveSeq::narrowK3);
Example fluent API
ReactiveSeq<Integer> list = Lists.unit()
.unit("hello")
.transform(h->Lists.monad().flatMap((String v) ->Lists.unit().unit(v.length()), h))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList("hello".length())
public static <T,R> MonadZero<Witness.reactiveSeq> monadZero()
ReactiveSeq<String> list = Lists.unit()
.unit("hello")
.transform(h->Lists.monadZero().filter((String t)->t.startsWith("he"), h))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList("hello"));
public static <T> MonadPlus<Witness.reactiveSeq> monadPlus()
ReactiveSeq<Integer> list = Lists.<Integer>monadPlus()
.plus(ReactiveSeq.widen(Arrays.asList()), ReactiveSeq.widen(Arrays.asList(10)))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList(10))
public static <T> MonadPlus<Witness.reactiveSeq> monadPlus(Monoid<ReactiveSeq<T>> m)
Monoid<ReactiveSeq<Integer>> m = Monoid.of(ReactiveSeq.widen(Arrays.asList()), (a,b)->a.isEmpty() ? b : a);
ReactiveSeq<Integer> list = Lists.<Integer>monadPlus(m)
.plus(ReactiveSeq.widen(Arrays.asList(5)), ReactiveSeq.widen(Arrays.asList(10)))
.convert(ReactiveSeq::narrowK3);
//Arrays.asList(5))
m
- Monoid to use for combining Listspublic static <T,R> MonadRec<Witness.reactiveSeq> monadRec(java.util.concurrent.Executor ex)
public static <C2,T> Traverse<Witness.reactiveSeq> traverse()
public static <T,R> Foldable<Witness.reactiveSeq> foldable()
int sum = Lists.foldable()
.foldLeft(0, (a,b)->a+b, ReactiveSeq.of(1,2,3,4));
//10
public static <C2,T> Higher<C2,Higher<Witness.reactiveSeq,T>> widen2(Higher<C2,ReactiveSeq<T>> flux)
flux
- HTK encoded type containing a List to widenpublic static <T> ReactiveSeq<T> narrow(Higher<Witness.reactiveSeq,T> completableList)
List
- Type Constructor to convert back into narrowed type