Using shapeless HLists with invariant containers
问题 Suppose the elements of an HList are subclasses of a generic trait. Each element is contained in case class Box[E](elem E) . That Box is invariant in E causes problems with mapping a poly1 over HList , selecting an element by its parent trait, etc. Here's an example: import shapeless._ trait Drink[+A]{ def v: A} case class Water(v: Int) extends Drink[Int] case class Juice(v: BigDecimal) extends Drink[BigDecimal] case class Squash(v: BigDecimal) extends Drink[BigDecimal] case class Box[E](elem