pub trait Monoid: Semigroup { fn empty() -> Self; }
A Monoid is a Semigroup that has an empty/ zero value
For a given Monoid, returns its empty/zero value
use frunk::Monoid; assert_eq!(<i16 as Monoid>::empty(), 0);