An algebra is just a type τ with some functions and identities. These functions take differing numbers of arguments of type τ and produce a τ; uncurried, they all look like (τ, τ,…, τ) → τ. They can also have "identities"—elements of τ that have special behavior with some of…

# Algebraic patterns - Semigroup

Given three puzzle pieces, these can be put together in two different ways, starting by combining the first and second, or staring with the second and third. Either way the final result is required to be the same. This means solving a puzzle is easily parallelizable. Rest of the article…