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>stringStringBuilderunitSet<'T>Map<'T,'U>TimeSpanTuple<*>'T1* ... *'TnTask<'T>'T->'SemigroupAsync<'T>Expr<'T>Lazy<'T>Dictionary<'T,'U>IDictionary<'T,'U>IReadOnlyDictionary<'T,'U>ResizeArray<'T>seq<'T>IEnumerator<'T>From F#+