我正在寻找一种方法将两个HList压缩在一起。第一个HList是从一个转换为其通用表示的case类生成的,第二个HList是手动定义的Nat类型的HList。
因此,我期望得到一个元组(或具有两个成员的HList),其中包含来自case类的一个字段和相关联的Nat类型。
目标是创建一个“可定制”的ZipWithIndex。
因此,我期望得到一个元组(或具有两个成员的HList),其中包含来自case类的一个字段和相关联的Nat类型。
目标是创建一个“可定制”的ZipWithIndex。
def derive[A, I <: HList, R <: HList, Z <: HList](implicit
gen: Generic.Aux[A, R],
zipper: Zip.Aux[R, I, Z],
enc: Lazy[Encoder[Z]])(a: A): Deriver[A] = {
val genRepr = gen.to(A)
val zipped = zip(genRepr :: ??? :: HNil)
enc.value(zipped)
}
case class Foo(a: String, b: String, c: String)
derive[Foo, Nat._1 :: Nat._3 :: Nat.7 :: HNil]
结果必须与encoderTuple[H,N <:Nat,T <:HList]:Encoder [(H,N):: T]
或encoderHList[H,N <:Nat,T <:HList]:Encoder [(H :: N :: HNil):: T]
匹配。