@hackage derive-monoid0.0.1

derive Semigroup/Monoid/IsList

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: