@non yeah: macros for tuples would (without some fancy tricks) generate a lot of functionally equivalent classes.
@milessabin we're often having to do horrible mutable tricks internal to immutable APIs to get an extra 5% (which multiplied out over our clusters becomes quite significant). For many uses cases, the generality will be nicer. Since semigroups are kind of foundational analytics objects at Twitter, we try to squeeze every bit we can (for instance adding the def sumOption(its: TraverseableOnce[T]): Option[T] method that makes it easy for us to use an intermediate mutable structure on a large batch of T.
to be clear: the generality and power of shapeless vs the one-off nature of current macros is nicer for a lot of cases.
@milessabin@mandubian I hope to be able to write something about the big pictures of the changes of milessabin/shapeless#435, and various optimizations (lower compile times) I stumbled upon, soon. The derivations here illustrate them a bit.