Constructor and Description |
---|
Instances() |
Modifier and Type | Method and Description |
---|---|
static <T,R> Applicative<Witness.eval> |
applicative()
import static com.aol.cyclops.hkt.jdk.Eval.widen;
import static com.aol.cyclops.util.function.Lambda.l1;
import static java.util.Arrays.asEval;
Evals.zippingApplicative()
.ap(widen(asEval(l1(this::multiplyByTwo))),widen(asEval(1,2,3)));
//[2,4,6]
|
static <T> Comonad<Witness.eval> |
comonad() |
static InstanceDefinitions<Witness.eval> |
definitions() |
static <T,R> Foldable<Witness.eval> |
foldable()
int sum = Evals.foldable()
.foldLeft(0, (a,b)->a+b, Eval.widen(Arrays.asEval(1,2,3,4)));
//10
|
static <T,R> Functor<Witness.eval> |
functor()
Transform a list, mulitplying every element by 2
|
static <T,R> Monad<Witness.eval> |
monad()
import static com.aol.cyclops.hkt.jdk.Eval.widen;
Eval<Integer> list = Evals.monad()
.flatMap(i->widen(EvalX.range(0,i)), widen(Arrays.asEval(1,2,3)))
.convert(Eval::narrowK3);
|
static <T,R> MonadRec<Witness.eval> |
monadRec() |
static <T,R> MonadZero<Witness.eval> |
monadZero()
Eval<String> list = Evals.unit()
.unit("hello")
.applyHKT(h->Evals.monadZero().filter((String t)->t.startsWith("he"), h))
.convert(Eval::narrowK3);
//Arrays.asEval("hello"));
|
static <C2,T> Traverse<Witness.eval> |
traverse() |
static <T> Pure<Witness.eval> |
unit()
Eval<String> list = Evals.unit()
.unit("hello")
.convert(Eval::narrowK3);
//Arrays.asEval("hello"))
|
public static InstanceDefinitions<Witness.eval> definitions()
public static <T,R> Functor<Witness.eval> functor()
Eval<Integer> list = Evals.functor().map(i->i*2, Eval.widen(Arrays.asEval(1,2,3));
//[2,4,6]
An example fluent api working with Evals
Eval<Integer> list = Evals.unit()
.unit("hello")
.applyHKT(h->Evals.functor().map((String v) ->v.length(), h))
.convert(Eval::narrowK3);
public static <T> Pure<Witness.eval> unit()
Eval<String> list = Evals.unit()
.unit("hello")
.convert(Eval::narrowK3);
//Arrays.asEval("hello"))
public static <T,R> Applicative<Witness.eval> applicative()
import static com.aol.cyclops.hkt.jdk.Eval.widen;
import static com.aol.cyclops.util.function.Lambda.l1;
import static java.util.Arrays.asEval;
Evals.zippingApplicative()
.ap(widen(asEval(l1(this::multiplyByTwo))),widen(asEval(1,2,3)));
//[2,4,6]
Example fluent API
Eval<Function<Integer,Integer>> listFn =Evals.unit()
.unit(Lambda.l1((Integer i) ->i*2))
.convert(Eval::narrowK3);
Eval<Integer> list = Evals.unit()
.unit("hello")
.applyHKT(h->Evals.functor().map((String v) ->v.length(), h))
.applyHKT(h->Evals.applicative().ap(listFn, h))
.convert(Eval::narrowK3);
//Arrays.asEval("hello".length()*2))
public static <T,R> Monad<Witness.eval> monad()
import static com.aol.cyclops.hkt.jdk.Eval.widen;
Eval<Integer> list = Evals.monad()
.flatMap(i->widen(EvalX.range(0,i)), widen(Arrays.asEval(1,2,3)))
.convert(Eval::narrowK3);
Example fluent API
Eval<Integer> list = Evals.unit()
.unit("hello")
.applyHKT(h->Evals.monad().flatMap((String v) ->Evals.unit().unit(v.length()), h))
.convert(Eval::narrowK3);
//Arrays.asEval("hello".length())
public static <T,R> MonadZero<Witness.eval> monadZero()
Eval<String> list = Evals.unit()
.unit("hello")
.applyHKT(h->Evals.monadZero().filter((String t)->t.startsWith("he"), h))
.convert(Eval::narrowK3);
//Arrays.asEval("hello"));
public static <T,R> MonadRec<Witness.eval> monadRec()
public static <C2,T> Traverse<Witness.eval> traverse()
public static <T,R> Foldable<Witness.eval> foldable()
int sum = Evals.foldable()
.foldLeft(0, (a,b)->a+b, Eval.widen(Arrays.asEval(1,2,3,4)));
//10
public static <T> Comonad<Witness.eval> comonad()