| Constructor and Description |
|---|
Instances() |
| Modifier and Type | Method and Description |
|---|---|
static <T,R> Applicative<Witness.future> |
applicative()
import static com.aol.cyclops.hkt.jdk.Future.widen;
import static com.aol.cyclops.util.function.Lambda.l1;
import static java.util.Arrays.asFuture;
Futures.zippingApplicative()
.ap(widen(asFuture(l1(this::multiplyByTwo))),widen(asFuture(1,2,3)));
//[2,4,6]
|
static <T> Comonad<Witness.future> |
comonad() |
static InstanceDefinitions<Witness.future> |
definitions() |
static <T,R> Foldable<Witness.future> |
foldable()
int sum = Futures.foldable()
.foldLeft(0, (a,b)->a+b, Future.widen(Future.ofResult(4)));
//4
|
static <T,R> Functor<Witness.future> |
functor()
Transform a future, mulitplying every element by 2
|
static <T,R> Monad<Witness.future> |
monad()
import static com.aol.cyclops.hkt.jdk.Future.widen;
Future<Integer> future = Futures.monad()
.flatMap(i->widen(Future.ofResult(0)), widen(Future.ofResult(2)))
.convert(Future::narrowK3);
|
static <T> MonadPlus<Witness.future> |
monadPlus()
Future<Integer> future = Futures.<Integer>monadPlus()
.plus(Future.widen(Future.future()), Future.widen(Future.ofResult(10)))
.convert(Future::narrowK3);
//Future[10]
|
static <T> MonadPlus<Witness.future> |
monadPlus(Monoid<Future<T>> m)
Monoid<Future<Integer>> m = Monoid.of(Future.widen(Future.future()()), (a,b)->a.isDone() ? b : a);
Future<Integer> future = Futures.<Integer>monadPlus(m)
.plus(Future.widen(Future.ofResult(5)), Future.widen(Future.ofResult(10)))
.convert(Future::narrowK3);
//Future(5)
|
static <T,R> MonadRec<Witness.future> |
monadRec() |
static <T,R> MonadZero<Witness.future> |
monadZero()
Future<String> future = Futures.unit()
.unit("hello")
.applyHKT(h->Futures.monadZero().filter((String t)->t.startsWith("he"), h))
.convert(Future::narrowK3);
//Future["hello"]
|
static <C2,T> Traverse<Witness.future> |
traverse() |
static <T> Pure<Witness.future> |
unit()
Future<String> future = Futures.unit()
.unit("hello")
.convert(Future::narrowK3);
//Future("hello")
|
public static InstanceDefinitions<Witness.future> definitions()
public static <T,R> Functor<Witness.future> functor()
Future<Integer> future = Futures.functor().map(i->i*2, Future.widen(Future.ofResult(2));
//[4]
An example fluent api working with Futures
Future<Integer> future = Futures.unit()
.unit("hello")
.applyHKT(h->Futures.functor().map((String v) ->v.length(), h))
.convert(Future::narrowK3);
public static <T> Pure<Witness.future> unit()
Future<String> future = Futures.unit()
.unit("hello")
.convert(Future::narrowK3);
//Future("hello")
public static <T,R> Applicative<Witness.future> applicative()
import static com.aol.cyclops.hkt.jdk.Future.widen;
import static com.aol.cyclops.util.function.Lambda.l1;
import static java.util.Arrays.asFuture;
Futures.zippingApplicative()
.ap(widen(asFuture(l1(this::multiplyByTwo))),widen(asFuture(1,2,3)));
//[2,4,6]
Example fluent API
Future<Function<Integer,Integer>> futureFn =Futures.unit()
.unit(Lambda.l1((Integer i) ->i*2))
.convert(Future::narrowK3);
Future<Integer> future = Futures.unit()
.unit("hello")
.applyHKT(h->Futures.functor().map((String v) ->v.length(), h))
.applyHKT(h->Futures.applicative().ap(futureFn, h))
.convert(Future::narrowK3);
//Future("hello".length()*2))
public static <T,R> Monad<Witness.future> monad()
import static com.aol.cyclops.hkt.jdk.Future.widen;
Future<Integer> future = Futures.monad()
.flatMap(i->widen(Future.ofResult(0)), widen(Future.ofResult(2)))
.convert(Future::narrowK3);
Example fluent API
Future<Integer> future = Futures.unit()
.unit("hello")
.applyHKT(h->Futures.monad().flatMap((String v) ->Futures.unit().unit(v.length()), h))
.convert(Future::narrowK3);
//Future("hello".length())
public static <T,R> MonadZero<Witness.future> monadZero()
Future<String> future = Futures.unit()
.unit("hello")
.applyHKT(h->Futures.monadZero().filter((String t)->t.startsWith("he"), h))
.convert(Future::narrowK3);
//Future["hello"]
public static <T,R> MonadRec<Witness.future> monadRec()
public static <T> MonadPlus<Witness.future> monadPlus()
Future<Integer> future = Futures.<Integer>monadPlus()
.plus(Future.widen(Future.future()), Future.widen(Future.ofResult(10)))
.convert(Future::narrowK3);
//Future[10]
public static <T> MonadPlus<Witness.future> monadPlus(Monoid<Future<T>> m)
Monoid<Future<Integer>> m = Monoid.of(Future.widen(Future.future()()), (a,b)->a.isDone() ? b : a);
Future<Integer> future = Futures.<Integer>monadPlus(m)
.plus(Future.widen(Future.ofResult(5)), Future.widen(Future.ofResult(10)))
.convert(Future::narrowK3);
//Future(5)
m - Monoid to use for combining Futurespublic static <C2,T> Traverse<Witness.future> traverse()
public static <T,R> Foldable<Witness.future> foldable()
int sum = Futures.foldable()
.foldLeft(0, (a,b)->a+b, Future.widen(Future.ofResult(4)));
//4
public static <T> Comonad<Witness.future> comonad()