A semigroup is a binary associative operation. For example,
+ addition
+
* multiplication
*
List.append
- subtraction BZZT! Subtraction is binary but not associative.
-