Create types with Semigroups by Brian LonsdorfCreate types with Semigroups
egghead