Ordnen Sie HList in der Methode mit Poly1 basierend auf dem Typparameter der Klasse zu

Ich habe Klasse, parametrisiert mitHList und ein anderer Typ. Wie kann ich verwendenmap aufHList in einer seiner Methoden?

Zusammenstellung dieses Codes löstjava.lang.AssertionError:

class Test[L <: HList, P](l: L, p: P) {
  type Cont[T] = (P, T)
  object generator extends (Id ~> Cont) {
    def apply[T](t: T) = p -> t
  }
  def test(implicit m: Mapper[generator.type, L]) = {
    l map generator
  }
}

new Test(1 :: HNil, 'a).test // java.lang.AssertionError

Mein Ziel ist dieses Ergebnis:

type Cont[T] = (Symbol, T)
val p = 'a
object generator extends (Id ~> Cont) {
  def apply[T](t: T) = p -> t
}

scala> (1 :: 'b' :: HNil) map generator
res0: shapeless.::[(Symbol, Int),shapeless.::[(Symbol, Char),shapeless.HNil]] = ('a,1) :: ('a,b) :: HNil

Antworten auf die Frage(1)

Ihre Antwort auf die Frage