## Interface ```scala trait Semigroup[A] { def combine(x: A, y: A): A } trait Monoid[A] extends Semigroup[A] { def empty: A } ``` ## Properties - Associativity ## Related: [[Semigroup]]