Yorgey, Brent A2023-05-222023-05-222012-07-012012-08-02https://repository.upenn.edu/handle/20.500.14332/6833The monoid is a humble algebraic structure, at first glance even downright boring. However, there’s much more to monoids than meets the eye. Using examples taken from the diagrams vector graphics framework as a case study, I demonstrate the power and beauty of monoids for library design. The paper begins with an extremely simple model of diagrams and proceeds through a series of incremental variations, all related somehow to the central theme of monoids. Along the way, I illustrate the power of compositional semantics; why you should also pay attention to the monoid’s even humbler cousin, the semigroup; monoid homomorphisms; and monoid actions.monoidhomomorphismmonoid actionEDSLProgramming Languages and CompilersSoftware EngineeringTheory and AlgorithmsMonoids: Theme and Variations (Functional Pearl)Presentation