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