derive-monoid (hackage): when your type can hold a list of itself, you can derive simple (but total/lawful) Semigroup/Monoid/IsList instances with TemplateHaskell.  see the Derive.List for examples and documentation. browse the test suite for more (buildable) examples:  HigherKind  IsList  Monoid  Semigroup
Keywords: derive-monoid|derive-monoid-|library|mit|program