Shapeless : Предвар. Неявное не найдено

Я пытаюсь использовать shapeless, чтобы легко накапливать объекты безопасным для типов способом.

Проблема заключается в том, что я хочу объединить ( :::) два HList. Я столкнулся с проблемой новичка (по крайней мере, кажется). Он пропускает неявный экземпляр Prependв контексте.

Однако, изучив hlist.scala, я вижу, что общие неявные определения defопределены в объектах Prependи PrependAux. .

Добавление import Prependи import PrependAuxвручную ничего не изменило (очевидно...).

Так вот код урезан до минимума:

enter code here

import shapeless._
import HList._
import Prepend._
import PrependAux._

object test {

  val a:HList = 1 :: 4 :: "A" :: HNil
  val b:HList = "R" :: false :: HNil

  val c:HList = a ::: b   // <<<<<<<<<<< NEEDS A Prepend in the context 

}

В консоли теперь:

[error]     test.scala:10: could not find implicit value for parameter prepend: shapeless.Prepend[shapeless.HList,shapeless.HList]
[error]     val c:HList = a ::: b   // this needs an implicit Prepend in the current context

Что должно жечь глаза?

спасибо

РЕДАКТИРОВАТЬ

Небольшое обновление, чтобы немного усложнить реальную проблему, потому что опошление было слишком сильным раньше.

Вот что я мог бы сделать:

case class A[L<:HList](a:L) { 
  def doSmth[C <:HList](c:C) = a ::: c 
}

Итак, у меня нет доступа к реальным типам, я знаю только, что они HLists.

7
задан missingfaktor 26 June 2012 в 12:40
поделиться