You can buy this project and download/modify it how often you want.
package libretto.util trait Semigroup[A] { def combine(l: A, r: A): A }