public final class Semigroup<A>
extends java.lang.Object
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.Double> |
doubleAdditionSemigroup
A semigroup that adds doubles.
|
static Semigroup<java.lang.Double> |
doubleMultiplicationSemigroup
A semigroup that multiplies doubles.
|
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.
|
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.
|
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<Option<A>> |
optionSemigroup()
A semigroup for optional values.
|
static <A> Semigroup<P1<A>> |
p1Semigroup(Semigroup<A> sa)
A semigroup for unary products.
|
static <A,B> Semigroup<P2<A,B>> |
p2Semigroup(Semigroup<A> sa,
Semigroup<B> sb)
A 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<Set<A>> |
setSemigroup()
A 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.
|
public static final Semigroup<java.lang.Integer> intAdditionSemigroup
public static final Semigroup<java.lang.Double> doubleAdditionSemigroup
public static final Semigroup<java.lang.Integer> intMultiplicationSemigroup
public static final Semigroup<java.lang.Double> doubleMultiplicationSemigroup
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 static <A> Semigroup<A> semigroup(F<A,F<A,A>> sum)
sum
- The function to construct this semigroup with.public static <A> Semigroup<A> semigroup(F2<A,A,A> sum)
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>> optionSemigroup()
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)