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>
array<'T>
string
StringBuilder
unit
Set<'T>
Map<'T,'U>
TimeSpan
Tuple<*>
'T1* ... *'Tn
Task<'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#+