Я создаю общую функцию, которая принимает HList
формы F[T1] :: ... :: F[Tn] :: HNil
, преобразует ее в F[T1 :: ... :: Tn :: HNil]
, а затем должна передать ее в переданный блок. Однако для того, чтобы это работало, мне нужно извлечь Тип HList в этом F[_]
. Я нашел что-то отдаленно относящееся к Shapeless' hlistconstraints
:
/**
* Type class witnessing that every element of `L` has `TC` as its outer type constructor.
*/
trait UnaryTCConstraint[L <: HList, TC[_]]
... но это можно использовать только для проверки того, что переданный hlist действительно состоит только из F[_]
; однако, похоже, нет способа извлечь этот _
бит, так сказать, в собственный hlist.
Где я должен искать, чтобы найти что-то, чтобы сделать работу? Или я должен просто не ожидать найти что-то из коробки и вместо этого самостоятельно построить вычисление типа?
Раскрытие информации: этот вопрос является вспомогательным к Generic transform/fold/map над кортежем/hlist, содержащим некоторые F[_], но, тем не менее, по моему мнению, не менее полезен, чем отдельный вопрос.
List[Int] :: List[String] :: HList
не сможет статьList[Int :: String :: HList]
только в том случае, если каждый список будет одинаковой длины, или вы хотите получить перекрестное произведение? - person Nate   schedule 22.10.2014List("a")::List(1,2)::HNil
, результатом такой операции будетList("a"::1::HNil,"a"::2::HNil)
- person Alejandro Navas   schedule 20.11.2018