I am handrolling my database API and would essentially like to model column families as a HList of columns, with the latter loosely being a Seq[_], so somewhere I have a type like Column[String]::Column[Int]::Column[Double]::HNil, with all elements sharing a common type constructor.
What would be the simplest way of expressing the type of rows, ie String::Int::Double::HNil, from the type given above, essentially unwrapping the inner types?
My current reasoning is that since shapeless can do a map over that HList given the right poly, one should be able to (ab)use the depedent type Out of the Mapper trait.
One thing I can think of is just implementing a useless poly with the right cases, like a Case.Aux[Column[T],T] for all Ts then summon a Mapper for it et voilá, there I have my Out, but this feels a bit hacky and I'm not sure it would even work.
On the other hand, I do not yet feel that comfortable around dependent types and type recursion to really want to try and implement something which shapeless obviously already does.
Thank you for any input!