Monoid<T> mixin

A monoid is a semigroup with an identity (empty).

A monoid is a specialization of a semigroup, so its operation must be associative.

Additionally, combine(x, empty) == combine(empty, x) == x.

For example, if we have Monoid<String>, with combine as string concatenation, then empty = "":

final instance = Monoid.instance<String>('', (a1, a2) => '$a1$a2');

expect(instance.combine('abc', instance.empty), instance.combine(instance.empty, 'abc'));
expect(instance.combine('abc', instance.empty), 'abc');
Superclass Constraints

Properties

empty → T
Return the identity element for this monoid.
no setter
hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

combine(T x, T y) → T
Associative operation which combines two values.
inherited
combineN(T a, int n) → T
Return a appended to itself n times.
override
intercalate(T middle) Semigroup<T>
Return a Semigroup which inserts middle between each pair of elements.
inherited
isEmpty(T a, Eq<T> eq) bool
Tests if a is the identity (empty).
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
reverse() Monoid<T>
Return a Monoid that reverses the order.
override
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

instance<A>(A emptyValue, A f(A a1, A a2)) Monoid<A>
Create a Monoid instance from the given function and empty value.
override