public final class Semigroup<A>
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static interface |
Semigroup.AltDefinition<A>
Primitives functions of Semigroup: alternative minimal definition and overridable methods.
|
static interface |
Semigroup.Definition<A>
Primitives functions of Semigroup: minimal definition and overridable methods.
|
Modifier and Type | Field and Description |
---|---|
static Semigroup<java.math.BigDecimal> |
bigdecimalAdditionSemigroup
A semigroup that adds big decimals.
|
static Semigroup<java.math.BigDecimal> |
bigDecimalMaximumSemigroup
A semigroup that yields the maximum of big decimals.
|
static Semigroup<java.math.BigDecimal> |
bigDecimalMinimumSemigroup
A semigroup that yields the minimum of big decimals.
|
static Semigroup<java.math.BigDecimal> |
bigdecimalMultiplicationSemigroup
A semigroup that multiplies big decimals.
|
static Semigroup<java.math.BigInteger> |
bigintAdditionSemigroup
A semigroup that adds big integers.
|
static Semigroup<java.math.BigInteger> |
bigintMaximumSemigroup
A semigroup that yields the maximum of big integers.
|
static Semigroup<java.math.BigInteger> |
bigintMinimumSemigroup
A semigroup that yields the minimum of big integers.
|
static Semigroup<java.math.BigInteger> |
bigintMultiplicationSemigroup
A semigroup that multiplies big integers.
|
static Semigroup<java.lang.Boolean> |
conjunctionSemigroup
A semigroup that ANDs booleans.
|
static Semigroup<java.lang.Boolean> |
disjunctionSemigroup
A semigroup that ORs booleans.
|
static Semigroup<java.lang.Boolean> |
exclusiveDisjunctionSemiGroup
A semigroup that XORs booleans.
|
static Semigroup<java.lang.Integer> |
intAdditionSemigroup
A semigroup that adds integers.
|
static Semigroup<java.lang.Integer> |
intMaximumSemigroup
A semigroup that yields the maximum of integers.
|
static Semigroup<java.lang.Integer> |
intMinimumSemigroup
A semigroup that yields the minimum of integers.
|
static Semigroup<java.lang.Integer> |
intMultiplicationSemigroup
A semigroup that multiplies integers.
|
static Semigroup<java.lang.Long> |
longAdditionSemigroup
A semigroup that adds longs.
|
static Semigroup<java.lang.Long> |
longMaximumSemigroup
A semigroup that yields the maximum of longs.
|
static Semigroup<java.lang.Long> |
longMinimumSemigroup
A semigroup that yields the minimum of longs.
|
static Semigroup<java.lang.Long> |
longMultiplicationSemigroup
A semigroup that multiplies longs.
|
static Semigroup<Natural> |
naturalAdditionSemigroup
A semigroup that adds natural numbers.
|
static Semigroup<Natural> |
naturalMaximumSemigroup
A semigroup that yields the maximum of natural numbers.
|
static Semigroup<Natural> |
naturalMinimumSemigroup
A semigroup that yields the minimum of natural numbers.
|
static Semigroup<Natural> |
naturalMultiplicationSemigroup
A semigroup that multiplies natural numbers.
|
static Semigroup<java.lang.StringBuffer> |
stringBufferSemigroup
A semigroup that appends string buffers.
|
static Semigroup<java.lang.StringBuilder> |
stringBuilderSemigroup
A semigroup that appends string builders.
|
static Semigroup<java.lang.String> |
stringSemigroup
A semigroup that appends strings.
|
static Semigroup<Unit> |
unitSemigroup
A semigroup for the Unit value.
|
Modifier and Type | Method and Description |
---|---|
static <A> Semigroup<Array<A>> |
arraySemigroup()
A semigroup for arrays.
|
<B,C> Semigroup<C> |
compose(Semigroup<B> sb,
F<C,B> b,
F<C,A> a,
F2<A,B,C> c) |
Semigroup<A> |
dual()
Swaps the arguments when summing.
|
static <A> Semigroup<Option<A>> |
firstOptionSemigroup()
A semigroup for optional values that take the first available value.
|
static <A> Semigroup<A> |
firstSemigroup()
A semigroup which always uses the "first" (left-hand side) value.
|
static <A,B> Semigroup<F<A,B>> |
functionSemigroup(Semigroup<B> sb)
A semigroup for functions.
|
static <A> Semigroup<IO<A>> |
ioSemigroup(Semigroup<A> sa)
A semigroup for IO values.
|
static <A> Semigroup<Option<A>> |
lastOptionSemigroup()
A semigroup for optional values that take the last available value.
|
static <A> Semigroup<A> |
lastSemigroup()
A semigroup which always uses the "last" (right-hand side) value.
|
Monoid<Option<A>> |
lift()
Lifts the semigroup to obtain a trivial monoid.
|
static <A> Semigroup<List<A>> |
listSemigroup()
A semigroup for lists.
|
Monoid<A> |
monoid(A zero)
Constructs a monoid from this semigroup and a zero value, which must follow the monoidal laws.
|
A |
multiply1p(int n,
A a)
Returns a value summed
n + 1 times (
a + a + ... |
static <A> Semigroup<NonEmptyList<A>> |
nonEmptyListSemigroup()
A semigroup for non-empty lists.
|
static <A> Semigroup<P1<A>> |
p1Semigroup(Semigroup<A> sa)
A lazy semigroup for unary products.
|
static <A,B> Semigroup<P2<A,B>> |
p2Semigroup(Semigroup<A> sa,
Semigroup<B> sb)
A lazy semigroup for binary products.
|
static <A> Semigroup<A> |
semigroup(F<A,F<A,A>> sum)
Constructs a semigroup from the given function.
|
static <A> Semigroup<A> |
semigroup(F2<A,A,A> sum)
Constructs a semigroup from the given function.
|
static <A> Semigroup<A> |
semigroupDef(Semigroup.AltDefinition<A> def)
Constructs a semigroup from the given definition.
|
static <A> Semigroup<A> |
semigroupDef(Semigroup.Definition<A> def)
Constructs a semigroup from the given definition.
|
static <A> Semigroup<Set<A>> |
setIntersectionSemigroup()
A intersection semigroup for sets.
|
static <A> Semigroup<Set<A>> |
setSemigroup()
A union semigroup for sets.
|
static <A> Semigroup<Stream<A>> |
streamSemigroup()
A semigroup for streams.
|
F<A,F<A,A>> |
sum()
Returns a function that sums according to this semigroup.
|
F<A,A> |
sum(A a1)
Returns a function that sums the given value according to this semigroup.
|
A |
sum(A a1,
A a2)
Sums the two given arguments.
|
A |
sumNel(NonEmptyList<A> as)
Sums the given values with left-fold.
|
A |
sumStream(A a,
F0<Stream<A>> as)
Sums the given values with left-fold, shortcutting the computation as early as possible.
|
<B> Semigroup<B> |
xmap(F<A,B> f,
F<B,A> g)
Maps the given functions across this monoid as an invariant functor.
|
public static final Semigroup<java.lang.Integer> intAdditionSemigroup
public static final Semigroup<java.lang.Integer> intMultiplicationSemigroup
public static final Semigroup<java.lang.Integer> intMaximumSemigroup
public static final Semigroup<java.lang.Integer> intMinimumSemigroup
public static final Semigroup<java.math.BigInteger> bigintAdditionSemigroup
public static final Semigroup<java.math.BigInteger> bigintMultiplicationSemigroup
public static final Semigroup<java.math.BigInteger> bigintMaximumSemigroup
public static final Semigroup<java.math.BigInteger> bigintMinimumSemigroup
public static final Semigroup<java.math.BigDecimal> bigdecimalAdditionSemigroup
public static final Semigroup<java.math.BigDecimal> bigdecimalMultiplicationSemigroup
public static final Semigroup<java.math.BigDecimal> bigDecimalMaximumSemigroup
public static final Semigroup<java.math.BigDecimal> bigDecimalMinimumSemigroup
public static final Semigroup<Natural> naturalMultiplicationSemigroup
public static final Semigroup<Natural> naturalAdditionSemigroup
public static final Semigroup<Natural> naturalMaximumSemigroup
public static final Semigroup<Natural> naturalMinimumSemigroup
public static final Semigroup<java.lang.Long> longAdditionSemigroup
public static final Semigroup<java.lang.Long> longMultiplicationSemigroup
public static final Semigroup<java.lang.Long> longMaximumSemigroup
public static final Semigroup<java.lang.Long> longMinimumSemigroup
public static final Semigroup<java.lang.Boolean> disjunctionSemigroup
public static final Semigroup<java.lang.Boolean> exclusiveDisjunctionSemiGroup
public static final Semigroup<java.lang.Boolean> conjunctionSemigroup
public static final Semigroup<java.lang.String> stringSemigroup
public static final Semigroup<java.lang.StringBuffer> stringBufferSemigroup
public static final Semigroup<java.lang.StringBuilder> stringBuilderSemigroup
public A sum(A a1, A a2)
a1
- A value to sum with another.a2
- A value to sum with another.public F<A,A> sum(A a1)
a1
- The value to sum.public F<A,F<A,A>> sum()
public A multiply1p(int n, A a)
n + 1
times (
a + a + ... + a
) The default definition uses peasant
multiplication, exploiting associativity to only require O(log n)
uses of
sum(Object, Object)
.n
- multipliera
- the value to be reapeatly summed n + 1 timesa
summed n
times. If n <= 0
, returns
zero()
public A sumNel(NonEmptyList<A> as)
public A sumStream(A a, F0<Stream<A>> as)
public <B> Semigroup<B> xmap(F<A,B> f, F<B,A> g)
f
- The covariant map.g
- The contra-variant map.public Monoid<A> monoid(A zero)
zero
- The zero for the monoid.public static <A> Semigroup<A> semigroupDef(Semigroup.Definition<A> def)
def
- The definition to construct this semigroup with.public static <A> Semigroup<A> semigroupDef(Semigroup.AltDefinition<A> def)
def
- The definition to construct this semigroup with.public static <A> Semigroup<A> semigroup(F<A,F<A,A>> sum)
semigroupDef(AltDefinition)
instead.sum
- The function to construct this semigroup with.public static <A> Semigroup<A> semigroup(F2<A,A,A> sum)
semigroupDef(Definition)
instead.sum
- The function to construct this semigroup with.public static <A> Semigroup<A> firstSemigroup()
public static <A> Semigroup<A> lastSemigroup()
public static <A,B> Semigroup<F<A,B>> functionSemigroup(Semigroup<B> sb)
sb
- The smeigroup for the codomain.public static <A> Semigroup<List<A>> listSemigroup()
public static <A> Semigroup<NonEmptyList<A>> nonEmptyListSemigroup()
public static <A> Semigroup<Option<A>> firstOptionSemigroup()
public static <A> Semigroup<Option<A>> lastOptionSemigroup()
public static <A> Semigroup<Stream<A>> streamSemigroup()
public static <A> Semigroup<Array<A>> arraySemigroup()
public static <A> Semigroup<P1<A>> p1Semigroup(Semigroup<A> sa)
sa
- A semigroup for the product's type.public static <A,B> Semigroup<P2<A,B>> p2Semigroup(Semigroup<A> sa, Semigroup<B> sb)
sa
- A semigroup for the product's first type.sb
- A semigroup for the product's second type.public static <A> Semigroup<IO<A>> ioSemigroup(Semigroup<A> sa)
public static <A> Semigroup<Set<A>> setSemigroup()