'Monoid' is a 'Semigroup' glued with a neutral element called 'mempty'.
In the same idea, 'Zero' is a 'Semigroup' glued with an absorbing element
Keep in mind that 'Zero' requires 'Semigroup'. If you have 'Semigroup' defined
to work with 'Monoid', you might end up with no way to implement 'Zero'.
That’s why the 'Semigroup' instance for 'Maybe' is confusing, because it relies
on 'Monoid', and cannot be used with 'Zero'. 'Success' is the 'Zero' equivalent
of 'Maybe' + 'Monoid'.