Карта в HList в методе с Poly1 на основе параметра типа класса

У меня есть класс, параметризованный сHList и какой-то другой тип. Как я могу использоватьmap наHList в одном из его методов?

Компиляция этого кода выдает:java.lang.AssertionError

class Test[L  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

Моя цель - такой результат:

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

Ответы на вопрос(1)

Решение Вопроса

В качестве обходного пути, если вы разделите создание экземпляраTest и вызовtest метод через два выражения, то он работает, как ожидалось,

scala> val t = new Test(1 :: HNil, 'a)
t: Test[shapeless.::[Int,shapeless.HNil],Symbol] = [email protected]

scala> t.test
res0: shapeless.::[(Symbol, Int),shapeless.HNil] = ('a,1) :: HNil
 senia27 окт. 2012 г., 10:32
Спасибо! К сожалению, обходной путь бесполезен, посколькуTest должно быть .implicit class
 Miles Sabin27 окт. 2012 г., 10:49
Понял. Можно было бы реструктурировать код таким образом, чтобы избежать ошибки скаляпа и получить форму, которую выищу. Перейдите к бесформенному списку рассылки и заберите его оттуда.

Ваш ответ на вопрос