T
- public interface Monoid<T>
Modifier and Type | Method and Description |
---|---|
java.util.function.BiFunction<T,T,T> |
combiner() |
default T |
mapReduce(java.util.stream.Stream toReduce)
Map a given Stream to required type (via mapToType method), then
reduce using this monoid
Example of multiple reduction using multiple Monoids and PowerTuples
|
default java.util.stream.Stream<T> |
mapToType(java.util.stream.Stream stream) |
static <T> Monoid<T> |
of(T zero,
java.util.function.BiFunction<T,T,T> combiner) |
static <T> Monoid<T> |
of(T zero,
java.util.function.Function<T,java.util.function.Function<T,T>> combiner) |
static <T> Monoid<T> |
of(T zero,
java.util.function.Function<T,java.util.function.Function<T,T>> combiner,
java.util.function.Function<?,T> mapToType) |
default T |
reduce(java.util.stream.Stream<T> toReduce) |
default java.util.function.BinaryOperator<T> |
reducer() |
T |
zero()
An element that when provided as a parameter to the combiner with another value, results
in the other value being returned
e.g.
|
T zero()
0 + 1 = 1 0 is zero() 1 * 2 = 2 1 is zero() "" + "hello" = "hello" "" is zero()
default java.util.function.BinaryOperator<T> reducer()
default java.util.stream.Stream<T> mapToType(java.util.stream.Stream stream)
default T mapReduce(java.util.stream.Stream toReduce)
Monoid<Integer> sum = Monoid.of(0,(a,b)->a+b);
Monoid<Integer> mult = Monoid.of(1,(a,b)->a*b);
<PTuple2<Integer,Integer>> result = PowerTuples.tuple(sum,mult).<PTuple2<Integer,Integer>>asReducer()
.mapReduce(Stream.of(1,2,3,4));
assertThat(result,equalTo(tuple(10,24)));
toReduce
- Stream to reducestatic <T> Monoid<T> of(T zero, java.util.function.Function<T,java.util.function.Function<T,T>> combiner, java.util.function.Function<?,T> mapToType)
static <T> Monoid<T> of(T zero, java.util.function.Function<T,java.util.function.Function<T,T>> combiner)
static <T> Monoid<T> of(T zero, java.util.function.BiFunction<T,T,T> combiner)