當摺疊到列表時,無法獲得foldLeft處理HList,當我將Hlist摺疊到字符串時,一切正常。Shapeless:foldLeft on hlist彙編錯誤
object wrapInList extends Poly1 {
implicit def intCase = at[Int]{v => List(v)}
implicit def stringCase = at[String]{v => List(v)}
}
object mergeToString extends Poly1 {
implicit def intCase = at[Int](_.toString())
implicit def stringCase = at[String](identity)
}
object foldListPoly extends Poly2 {
implicit def foldToList[T](implicit st: wrapInList.Case.Aux[T, List[T]]) =
at[List[T], T]{ (acc, t) => acc ::: wrapInList(t) }
implicit def foldToString[T](implicit st: mergeToString.Case.Aux[T, String]) =
at[String, T]{ (acc, t) => acc + mergeToString(t)}
}
val hList = "aoeu" :: 42 :: HNil
val foldedHlist = hList.foldLeft("")(foldListPoly)
val foldedHList2 = hList.foldLeft(Nil)(foldListPoly)
Erorr上編譯foldedHList2
could not find implicit value for parameter folder:
shapeless.ops.hlist.LeftFolder[shapeless.::[String,shapeless.::[Int,shapeless.HNil]],scala.collection.immutable.Nil.type,com.test.Test.foldListPoly.type]
你可以添加錯誤嗎? –
我更新了編譯錯誤的問題。 – andresrcom