semigroup: Type class / object with one associative operator (often named 'append', 'combine', or 'concat')