Take some data Foo a b c, and i'd like to derive traverse like function for second argument. How hard would it be to parametrise makeTraverse to do that, i.e.
traverseFooB :: Applicative f => (b -> f b') -> Foo a b c -> f (Foo a b' c)
traverseFooB = $(makeTraverse ...)
Even more generally, would be even greater to have unified deriving mechanism for Bitraversable and futher kind-variations. (I had uses for tritraverse), maybe something like
traverseFooAB f g = makeTraversal ''Foo [Use 'f, Use 'g, Skip]