In mathematics, a semigroup is an algebraic structure consisting of a set together with an associative binary operation. A semigroup generalizes a monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup. ___
(+)
/ (++)
static member (+) (x: 'Semigroup, y: 'Semigroup) : 'Semigroup
(x + y) + z = x + (y + z)
Monoid: A monoid is a Semigroup with an additional zero
operation
From .Net/F#
list<'T>
option<'T>
voption<'T>
array<'T>
string
StringBuilder
unit
Set<'T>
Map<'T, 'U>
TimeSpan
Tuple<*>
ValueTuple<*> ( * up to 7 elements)
'T1* ... *'Tn
Task<'T>
ValueTask<'T>
'T -> 'Semigroup
Async<'T>
Expr<'T>
Lazy<'T>
Dictionary<'T, 'U>
IDictionary<'T, 'U>
IReadOnlyDictionary<'T, 'U>
ResizeArray<'T>
seq<'T>
IEnumerator<'T>
From F#+