Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala HList折叠功能,需要HList_Scala_Shapeless - Fatal编程技术网

Scala HList折叠功能,需要HList

Scala HList折叠功能,需要HList,scala,shapeless,Scala,Shapeless,基本上,我想要这样的东西: class FoldFn(l: HList) extends Poly { // stuff } def doStuff[L <: HList](l: L)(implicit folder: LeftFolder.Aux[L, Int, FoldFn, Int]): Int = l.foldLeft(0)(new FoldFn(l))(folder) newfoldfn(l)显然具有类型FoldFn,但编译器不会接受LeftFolder实例。 我如何

基本上,我想要这样的东西:

class FoldFn(l: HList) extends Poly {
  // stuff
}

def doStuff[L <: HList](l: L)(implicit folder: LeftFolder.Aux[L, Int, FoldFn, Int]): Int =
  l.foldLeft(0)(new FoldFn(l))(folder)
newfoldfn(l)
显然具有类型
FoldFn
,但编译器不会接受
LeftFolder
实例。

我如何才能让它工作?

多态函数值需要一个稳定的标识符,这使得这很棘手。一种解决方案是结合使用
mapcont
zip
——请参阅以了解一些讨论。我最近遇到了一个类似的问题,这可能会帮助您:
type mismatch
found   : shapeless.ops.hlist.LeftFolder.Aux[L,Int,FoldFn,Int]
 (which expands to)  shapeless.ops.hlist.LeftFolder[L,Int,FoldFn]{type Out = Int}  
required: shapeless.ops.hlist.LeftFolder[L,Int,op.type]