具有相同形状的案例类?

Kev*_*ith 4 scala shapeless

鉴于两个case classes:

case class Foo(x: Int)
case class Bar(x: Int)
Run Code Online (Sandbox Code Playgroud)

shapeless,我怎么能确定Foo,并Bar具有相同的"形",即Int :: HNilHList

Oli*_*ain 5

A,B具有相同的形状,如果存在一个形状S,使得S是两者的通用表示AB.这直接转换为以下功能:

trait SameShape[A, B]

object SameShape {
  implicit def instance[A, B, S]
    (implicit a: Generic.Aux[A, S], b: Generic.Aux[B, S]): SameShape[A, B] =
      new SameShape[A, B] {}
}
Run Code Online (Sandbox Code Playgroud)