Scala 无形状:为什么align不适用于单例类型?

Scala 无形状:为什么align不适用于单例类型?,scala,shapeless,Scala,Shapeless,我希望这段代码能够编译 导入无形状_ 导入记录_ 导入操作记录_ 导入ops.hlist.Align 导入syntax.singleton_ case类来自(i:Int,s:String,a:Int,b:Int,c:Int) case类To(j:Int,s1:String,s2:String,a:Int,b:Int,c:Int) val f=从(1,“从”,1,1,1) val fromGen=标签页[From] val toGen=标签页[To] val lgenRepr=从发电机到(f) v

我希望这段代码能够编译

导入无形状_
导入记录_
导入操作记录_
导入ops.hlist.Align
导入syntax.singleton_
case类来自(i:Int,s:String,a:Int,b:Int,c:Int)
case类To(j:Int,s1:String,s2:String,a:Int,b:Int,c:Int)
val f=从(1,“从”,1,1,1)
val fromGen=标签页[From]
val toGen=标签页[To]
val lgenRepr=从发电机到(f)
val modified=lgenRepr.renameField('i,'j)-'s+('s1->“s1”)+('s2->“s2”)
val align=align[modified.type,toGen.Repr]
toGen.from(对齐(修改))
但是如果失败了

could not find implicit value for parameter alm: shapeless.ops.hlist.Align[modified.type,toGen.Repr]
 val align = Align[modified.type, toGen.Repr]

使用
标记的.FieldType
构造所需的类型是有困难的,但它没有解释如何删除字段,因此如果无法使
对齐
与单例类型一起工作,了解如何处理这些字段将非常有用。

问题是
修改的.type
有点太精确了。。。它是特定val的单例类型,而不是计算记录类型。要在REPL上执行此操作,以下操作很好

@ modified.align[toGen.Repr] 
res14: toGen.Repr = 1 :: S1 :: S2 :: 1 :: 1 :: 1 :: HNil

问题是
modified.type
有点太精确了。。。它是特定val的单例类型,而不是计算记录类型。要在REPL上执行此操作,以下操作很好

@ modified.align[toGen.Repr] 
res14: toGen.Repr = 1 :: S1 :: S2 :: 1 :: 1 :: 1 :: HNil