I'd like that as well, but I don't think it's possible without using either reflection or macros...

It *is* possible to drop a little bit of the boilerplate here if we only want to handle case classes and other `Product`s, since that gives you another way to pull the individual elements out. That would look like:

    Monoid(Metrics.apply _)

It's an easy change, so whatever you guys prefer.