Я обрабатываю свой API базы данных и, по сути, хотел бы моделировать семейства столбцов как HList
столбцов, причем последний может быть Seq[_]
, поэтому где-то у меня есть тип, подобный Column[String]::Column[Int]::Column[Double]::HNil
, со всеми элементами, использующими общий конструктор типа.
Каким будет самый простой способ выразить тип строк, т. Е. String::Int::Double::HNil
, из указанного выше типа, по существу разворачивая внутренние типы? Мое текущее рассуждение состоит в том, что, поскольку shapeless может создать карту над этим HList
при правильном poly
, следует иметь возможность (ab) использовать зависимый тип Out
признака Mapper
.
Одна вещь, о которой я могу думать, - это просто реализовать бесполезный poly
с правильными случаями, например Case.Aux[Column[T],T]
для всех T
s, затем вызвать Mapper
для него и вуаля, вот и мой Out
, но это кажется немного взломанным, и я не уверен это даже сработает. С другой стороны, я еще не чувствую себя настолько комфортно в связи с зависимыми типами и рекурсией типов, чтобы действительно попытаться реализовать что-то, что, очевидно, уже делает бесформенный.
Спасибо за любой вклад!