Our first functional structures are Monoids and Semigroups. These aren't immediately relevant to monads, but they're simple and will get us used to thinking about abstract structures with Haskell classes.