Monoid
public protocol Monoid : Semigroup
                Protocol for a monoid algebra, allowing monoidal composition. It’s a Semigroup with identity element, element which,
when combined to any other element, will keep the other elemenet unchanged, regardless if the composition happened from
the left or from the right, for example: a <> identity = identity <> a = a, for any a in A.
Axioms:
- Totality
 - Associativity
 - Identity
 
For example, having a f(x) -> x and a g(x) -> x, one would be able to compose h = f <> g in a way that the new
function h(x) will be similar to g(f(x)), and there should be a function i(x) where i, when composed to any
other function, will not change the result: f <> i = i <> f = f, for f, g, h and all other endo-functions.
- 
                  
                  
Neutral monoidal container. Composing any monoid with an identity monoid should result in a function unchanged, regardless if the empty element is on the left-hand side or the right-hand side.
Therefore,
f(x) <> identity == f(x) == identity <> f(x)Declaration
Swift
static var identity: Self { get } 
View on GitHub
        Monoid Protocol Reference