One of the trickiest things to implement well using plain GHC generics is a generic traverse. One of a few rather involved bags of tricks are needed to avoid extra fmap invocations in the ambient Applicative, and none of these are sufficient (with current GHC) to get the generic representations to inline away reliably. I don't claim to understand staged generics fully, but it's not at all obvious to me that they are up to the task either. Are they? If so, how?