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