pub fn monoid<S: Debug + PartialEq + Clone, const N: usize>(
items: &[S; N],
f: &impl Fn(S, S) -> S,
zero: S,
) -> Result<(), &'static str>Expand description
Defines a monoid structure.
A monoid is a set of items along with an associative binary operation f and an identity element zero.
The f operation combines two items and the zero element acts as the identity for f.